Herkese merhaba,
Bu yazıda SQL Server’da kolon içindeki sıfırları temizleyen prosedür hakkında bilgi vereceğim.
Aslında bu bir prosedür değildi. Konu ile ilgili araştırma yaparken kod üzerinde birçok değişiklik yaparak kodu dinamik hale getirdim. Benzer bir örneğe internette rastlamadım. Alanında tektir. Daha da geliştirilebilir.
Prosedür parametre olarak tablo adı ve kolon adı almakta. Yani bu iki parametreyi doğru verdiğiniz takdirde prosedür çalışacaktır. Kodları aşağıda görmektesiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
--Tablo oluşturulması CREATE TABLE Sayilar( Sayi VARCHAR(10) ) GO --Tabloya veri eklenmesi INSERT INTO Sayilar ( Sayi ) VALUES ('001'), ('002'), ('003'), ('004'), ('005'), ('006'), ('007'), ('008'), ('009'), ('010'), ('011'), ('012'), ('013'); --Tablonun kontrolü SELECT * FROM Sayilar GO --Sıfırları silen prosedür CREATE PROC SifirlariSilenProsedur ( @TabloAdi NVARCHAR(50), @KolonAdi NVARCHAR(50) ) AS BEGIN IF COL_LENGTH(@TabloAdi, @KolonAdi) IS NOT NULL BEGIN DECLARE @SQLUPDATECUMLECIGI VARCHAR(200) SET @SQLUPDATECUMLECIGI='UPDATE ' + @TabloAdi+' SET ' + @KolonAdi +'=SUBSTRING(' +@KolonAdi + ', PATINDEX(''%[^0]%'', '+ @KolonAdi +' ), 10);' --PRINT @SQLUPDATECUMLECIGI EXEC (@SQLUPDATECUMLECIGI) PRINT 'İşlem başarıyla tamamlandı.' END; ELSE BEGIN PRINT 'Tabloda böyle bir kolon adı mevcut değil. Lütfen kontrol edin!!!'; END; END; --Prosedürün kullanımı EXEC SifirlariSilenProsedur 'Sayilar','Sayidddd' |
Prosedürü oluşturup çalıştırdığınızda aşağıdaki gibi bir sonuç alacaksınız.
Görüldüğü üzere kolon içinde Sayi sütunu içinde bulunan değerlerin başında sıfır vardı. Bunların hepsini düzgün bir biçimde kaldırmış oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.
