SQL Server’da Karakter Şifreleme Fonksiyonu

Herkese merhaba,

Bu yazıda SQL Server’da karakter şifreleme fonksiyonu hakkında bilgi vereceğim.

Aslında bu bilgiyi veren ve kodları hazırlayan kişi Vedat Özer Bey. Kendisine çok teşekkürler.

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
('Yavuz Selim Kart'),
('Vedat Öztürk');
SELECT *,
       dbo.FN_KARAKTERSIFRELE(ISIM, '3', '3') SONUC
FROM @ISIMLER;

Fonksiyonu oluşturup çalıştırdığınızda aşağıdaki gibi bir sonuç alacaksınız.

Sorgu ile ilgili detaylı bilgi almak isterseniz Vedat Özer Beye ulaşabilirsiniz.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

SQL Server Eğitimleri Kanalına Abone Olun

Şunlar makaleler de hoşunuza gidebilir