Anasayfa » Forum

Cümledeki Kelimeler...
 

[Çözüldü] Cümledeki Kelimeleri Ayırarak * Koyma  

  RSS
Mehmet Sucu
(@mehmetsucu)
Üye

Merhabalar,

Tablomda Adı ve Soyadı ayrı satırlarda tutuyorum. Kişilerin iki adı ya da soyadı olabiliyor. Ben ilk üç karakterden sonrakilere * işareti koymak istiyorum. 

Kelimeleri ayırıp * koyuyorum fakat tabloda 2 kelime ya da 4 kelime isim soyisim olunca verim bozuluyor.Tek satırda nasıl yazılabilir?

Örneğin: Adi+''+Soyadi

1. Ferhan Güney Bayrak Sultan

2. Hasan Gönül

3. Hüseyin Halil Göktürk

 

Sonuç:

Fer*** Gün*** Bay*** Sul***

Has*** Gön***

Hüs*** Hal*** Gök***

Bu konu 5 gün önce Mehmet Sucu tarafından düzenlendi

Mehmet SUCU
msucu@yuzyilhastanesi.com

Alıntı
Gönderildi : 01/12/2019 12:02
Buğra PARLAYAN
(@bugraparlayan)
Üye Forum Yöneticisi

Selamlar,

Bu işlemi sorgu ile yapmak yerine veri tabanı özelliklerini kullanmanız daha iyi olacak. Örneğin siz ilk 3 karakterden sonra yıldız gelsin demişssiniz. İsmi üç harfli olanlarda ( ece , eda , ali , Nil vb. ) sorun olacaktır.

Size önerim, Oracle için DBMS_REDACT , Mssql için dynamic data masking konularını incelemeniz. 

https://oracle-base.com/articles/12c/data-redaction-12cr1
https://blog.toadworld.com/what-are-the-gdpr-rules-and-how-do-these-apply-to-the-dba

CevapAlıntı
Gönderildi : 01/12/2019 14:04
Vedat Özer
(@vedatozerr)
Üye

Selamlar,

Alternatif olarak aşağıdaki sorguyu deneyebilir misiniz. 



IF (SELECT COUNT(*) FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'FN_KARAKTERSIFRELE') AND XTYPE IN (N'FN', N'IF', N'TF'))>0
BEGIN
DROP FUNCTION [dbo].[FN_KARAKTERSIFRELE]
END

GO

CREATE FUNCTION FN_KARAKTERSIFRELE (@ISIM NVARCHAR(4000),@KARAKTER INT,@YILDIZSAYISI INT)
RETURNS NVARCHAR(4000)
AS
Begin
---=== @ISIM >>>> Değişkeni ismin kendisini alacak
---=== @KARAKTER >>> İsimden kaç tane karakter alınacak
---=== @YILDIZSAYISI >>> Karakterden sonra eklenecek yıldız sayısı

DECLARE @SONUC NVARCHAR(4000) ;
DECLARE @TABLOM TABLE (SATIRNO INT IDENTITY(1,1) ,ID INT,ISIM NVARCHAR(4000))

INSERT INTO @TABLOM
SELECT 1 ID,T.C.value('.', 'VARCHAR(4000)') AS ISIM
FROM (SELECT CAST('<C>' + REPLACE(@ISIM,' ','</C><C>') + '</C>' AS XML) AS X) AS A
CROSS APPLY X.nodes ('/C') AS T(C)

SELECT
@SONUC=stuff((select ' '+CASE WHEN LEN(ISIM)>=@KARAKTER THEN SUBSTRING(ISIM,1,@KARAKTER)+''+REPLICATE('*', @YILDIZSAYISI) ELSE ISIM END
FROM @TABLOM n WHERE n.ID = n.ID ORDER BY N.SATIRNO ASC FOR XML PATH('')), 1, 2, '')
FROM @TABLOM AS T
GROUP BY ID

RETURN @SONUC
End

GO

DECLARE @ISIMLER TABLE (ISIM NVARCHAR(4000))
INSERT INTO @ISIMLER
VALUES('Ferhan Güney Bayrak Sultan'),('Hasan Gönül'),('Hüseyin Halil Göktürk')

SELECT *,dbo.FN_KARAKTERSIFRELE(ISIM,'3','3')SONUC FROM @ISIMLER

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
vedatozer@outlook.com

CevapAlıntı
Gönderildi : 01/12/2019 14:24
Mehmet Sucu
(@mehmetsucu)
Üye

@bugraparlayan teşekkürler. DB de maskeleme yapıyorum hash atıyorum. Bu tek seferlik lazım bana. Raporlama yapacağım web e.

 

Mehmet SUCU
msucu@yuzyilhastanesi.com

CevapAlıntı
Gönderildi : 01/12/2019 15:19
Mehmet Sucu
(@mehmetsucu)
Üye

Selamlar @vedatozerr

Yarın deneceğim, teşekkürler.

 

Mehmet SUCU
msucu@yuzyilhastanesi.com

CevapAlıntı
Gönderildi : 01/12/2019 15:19
Mehmet Sucu
(@mehmetsucu)
Üye

Destekleriniz için teşekkürler fakat sorunumu çözmedi.

Mehmet SUCU
msucu@yuzyilhastanesi.com

CevapAlıntı
Gönderildi : 02/12/2019 09:37
Vedat Özer
(@vedatozerr)
Üye

 Mehmet bey,

Sorgunun verdiği sonucu paylaşabilir misiniz.

Mümkünse resim                                                                                                                                                                          

Bu ileti 4 gün önce Vedat Özer tarafından düzenlendi

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
vedatozer@outlook.com

CevapAlıntı
Gönderildi : 02/12/2019 09:38
Mehmet Sucu
(@mehmetsucu)
Üye

Teşekkür ederim @vedatozerr 

Mehmet SUCU
msucu@yuzyilhastanesi.com

CevapAlıntı
Gönderildi : 02/12/2019 11:04
Vedat Özer
(@vedatozerr)
Üye

Rica Ederim,

Yukarıda kodu eklerken bir boşluk eklemeyi unutmuşum kodun güncel hali aşağıdadır.                                        

 

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
vedatozer@outlook.com

CevapAlıntı
Gönderildi : 02/12/2019 12:14
Paylaş:

Lütfen Giriş yap yada Kayıt ol