Herkese merhaba,
Bu yazıda SQL Server’da karakter listeleme hakkında bilgi vereceğim.
Aslında bu bilgiyi veren ve kodları hazırlayan kişi Vedat Özer Bey. Sorguyu hazırlamış. Gerekli açıklamaları eklemiş. Bana da paylaşması kaldı.
Kendisine bu çalışması için ayrıca teşekkürler.
Aşağıdaki kodu kendi adınızla deneyebilirsiniz.
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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
---=== SET TABANLI ÇÖZÜM DECLARE @HARF VARCHAR(8000) = 'YAVUZ SELIM KART'; WITH DIZISAYI ([Sira No]) AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM ( VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0), (0) ) a (n) CROSS JOIN ( VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0), (0) ) c (n) CROSS JOIN ( VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0), (0) ) d (n) CROSS JOIN ( VALUES (0), (0), (0), (0), (0), (0), (0), (0) ) e (n) ) SELECT [Sira No], [Karakter] FROM ( SELECT [Sira No], SUBSTRING(@HARF, [Sira No], 1) AS [Karakter] FROM DIZISAYI WHERE LEN(@HARF) >= [Sira No] ) a WHERE [Karakter] IS NOT NULL; ---=== Döngü ile Çözüm; IF OBJECT_ID('tempdb..#sonuc') IS NOT NULL BEGIN DROP TABLE #sonuc; END; CREATE TABLE #sonuc ( [Sira No] INT IDENTITY(1, 1), [Karakter] VARCHAR(5) ); DECLARE @UZUNLUK INT, @SAY INT = 1; SET @UZUNLUK = ( SELECT LEN(@HARF) ); WHILE @UZUNLUK <> 0 BEGIN INSERT INTO #sonuc SELECT SUBSTRING(@HARF, @SAY, 1); SET @UZUNLUK = @UZUNLUK - 1; SET @SAY = @SAY + 1; END; SELECT * FROM #sonuc; |
Sorguyu çalıştırdığınızda aşağıdaki gibi bir sonuç alacaksınız.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.
