SQL Padleft Fonksiyonu

Microsoft SQL konuları
Kullanıcı avatarı
Tarkan VURAL
Doğrulandı
Site Admin
Mesajlar: 56
Kayıt: 22 Haz 2023, 00:03
Lokasyon: İstanbul
Web Sitesi: http://www.tarkanvural.com.tr
Meslek: Yazılım ve Veri Tabanı Uzmanı
Adınız: Tarkan
Soyadınız: VURAL

SQL Padleft Fonksiyonu

Mesaj 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.
Konu Dışı
Logo Yazılım, Özel Yazılım, Entegrasyon işlemleri, Excel VBA kodlama, Raporlama, Eğitim.. gibi konulardaki destek ihtiyaçlarınız içinhelpdesk@evnyazilim.com.trile irtibata geçebilirsiniz.