1. sayfa (Toplam 1 sayfa)

SQL Padleft Fonksiyonu

Gönderilme zamanı: Çrş Tem 05, 2023 11:27 pm
gönderen Tarkan VURAL
Yazılımlarda kullandığımız gibi bazen SQL query cümleleri yazarken de tamamlama yapma ihtiyacımız doğabiliyor.
Örneğin bir değerin 8 karakter olması zorunluluğu varsa ve başına sabit karakterler eklemek istiyorsak, eldeki değerin önce uzunluğunu biliyor olmamız gerekiyor. Sonra bunu tamamlama yapma şekliyle dönüştürmemiz gerekiyor.

Örneğin;
Elimizdeki değer 1234 ise ve biz bunu aslında 00001234 olarak göstermek istiyorsak, önce SQL içinde aşağıdaki fonksiyonu oluşturmamız gerekiyor.

Kod: Tümünü seç

IF OBJECT_ID('Evn_PadLeft', 'FN') IS NULL
BEGIN
EXEC(
   'CREATE FUNCTION [dbo].[Evn_PadLeft]
      (
        @EvnText NVARCHAR(MAX) ,
        @EvnReplace NVARCHAR(MAX) ,
        @EvnLen INT
      )
RETURNS NVARCHAR(MAX)
AS
    BEGIN 
        DECLARE @EvnInt NVARCHAR(MAX) 
        SELECT @EvnInt = ISNULL(LTRIM(RTRIM(@EvnText)) , '''')
        RETURN RIGHT(REPLICATE(@EvnReplace,@EvnLen)+ @EvnInt, @EvnLen)
    END'
)
END 
Sonra SQL cümlesini aşağıdaki gibi yazabiliriz :

Kod: Tümünü seç

SELECT dbo.Evn_Padleft('1234','0',8) 

Kod: Tümünü seç

SELECT dbo.Evn_Padleft('elimizdeki değer','başa eklenecek karakter', toplam basamak sayısı) 
Sonuç olarak 00001234 döndürecektir.

Ya da;
Değerimiz 1234 ve biz bunu yasal mevzuattaki gibi 16 karakterli FAT2023000001234 e-Fatura numarası gibi oluşturacağız.

Kod: Tümünü seç

SELECT 'FAT'+CAST(YEAR(GETDATE())AS varchar(5))+dbo.Evn_Padleft('1234','0',9)
bu şekilde istediğimiz sonucu döndürecektir.