Rakamları Harflerden Ayıran Fonksiyon
#1
Merhaba, bu yazıda sizlere T-SQL ile bir metindeki rakamları harflerden ayırıp yazan fonksiyonun T-SQL ile nasıl yapıldığını göstermeye çalışacağım, umarım faydasını görürsünüz…

Fonksiyon ve Açıklamaları
SQL
  1. CREATE FUNCTION rakamlariHarflerdenAyir(@metin VARCHAR(MAX))
  2. /*
  3. Fonksiyonumuzun adını “rakamlariHarflerdenAyir” olarak belirledik.
  4. @metin adında da NVARCHAR tipinde bir parametre belirliyoruz.
  5. Rakamları metinlerden ayıklayacak metnimizi buraya gireceğiz.
  6. "www.tportal.org"
  7. */
  8. RETURNS NVARCHAR(MAX)
  9. /*
  10. Fonksiyon NVARCHAR tipinde değer döndürecek.
  11. */
  12. AS
  13. BEGIN
  14. DECLARE @sayac INT
  15. DECLARE @ayiklanan_metin NVARCHAR(100)
  16. /*
  17. Döngümüz için @sayac adında bir değişken tanımladık.
  18. Ayıkladığımız rakamları toplamak için de ayiklanan_metin adında bir değişken tanımladık.
  19. */
  20.  
  21. SET @sayac=1
  22. SET @ayiklanan_metin = ''
  23. /*
  24. Değişkenlerimize ait başlangıç değerlerini tanımladık.
  25.  
  26. */
  27.  
  28. WHILE LEN(@metin)>=@sayac
  29. /*
  30. WHILE döngüsü ile metindeki her bir rakamı/harfi tek tek kontrol edeceğiz.
  31. Her bir rakam/harf kontrol edildiğinde sayaç çalışıyor.
  32. Tüm rakam/harflerin kontrolü yapıldıktan sonra sayacın çalışması anlamsız olacaktır.
  33. Bu yüzden @sayac değişkeni @metin değişkeninin uzunluğundan büyük ise döngüyü durduruyoruz.
  34. */
  35.  
  36. BEGIN
  37. IF ISNUMERIC(SUBSTRING(@metin,@sayac,1))=1
  38. /*
  39. SUBSTRING fonksiyonu ile @metin değişkenindeki her bir harfi/rakamı sırayla alıyoruz.
  40. ISNUMERIC fonksiyonu ile alınan harfin ya da rakamın sayısal bir değer olup olmadığını kontrol ediyoruz.
  41. Eğer sonuç 1'e eşitse sayısal bir değerdir ve şartı sağladığından IF operatörüne ait BEGIN – END arası komutlar çalışabilir.
  42. */
  43.  
  44. BEGIN
  45. SET @ayiklanan_metin = @ayiklanan_metin + SUBSTRING(@metin,@sayac,1)
  46. /*
  47. @ayiklanan_metin değişkenimizi başta boş ('') olarak tanımlamıştık.
  48. Fonksiyon çalışırken bulduğu her sayısal ifadeyi @ayıklanan_metin değişkenindeki
  49. değerin yanına ekleyecektir.
  50. */
  51.  
  52. END
  53. SET @sayac=@sayac+1
  54. /*
  55. Fonksiyon sayısal değer bulmuş olsa da olmasa da sayacımızı arttırıyoruz.
  56. */
  57.  
  58. END
  59. RETURN
  60. @ayiklanan_metin
  61. /*
  62. Fonksiyon çalışmasını bitirdiği zaman @ayiklanan_metin
  63. değerini sonuç olarak döndürmesini sağlıyoruz.
  64. "www.tportal.org"
  65. */
  66.  
  67. END



Fonksiyonun Açıklamasız Görünümü
SQL
  1. CREATE FUNCTION rakamAyir(@metin VARCHAR(MAX))
  2. RETURNS NVARCHAR(MAX)
  3. AS
  4. BEGIN
  5. DECLARE @sayac INT
  6. DECLARE @ayiklanan_metin NVARCHAR(100)
  7.  
  8. SET @sayac=1
  9. SET @ayiklanan_metin = ''
  10.  
  11. WHILE LEN(@metin)>=@sayac
  12. BEGIN
  13. IF ISNUMERIC(SUBSTRING(@metin,@sayac,1))=1
  14. BEGIN
  15. SET
  16. @ayiklanan_metin = @ayiklanan_metin + SUBSTRING(@metin,@sayac,1)
  17. END
  18. SET @sayac=@sayac+1
  19. END
  20. RETURN
  21. @ayiklanan_metin
  22. END



Not: Fonksiyonu oluşturduktan sonra Object Explorer’dan veritabanlarını yenileyin, gerekirse SQL Server’ı yeniden başlatın, çünkü fonksiyonu görmeme gibi bir sıkıntı olabiliyor.

Fonksiyonun Kullanımı
SQL
  1. SELECT dbo.rakamlariHarflerdenAyir('a1b2c3d4e5f6g7h8')


Sonuç:12345678

Kaynak: http://www.tportal.org/t-sql-rakamlari-h...on-yapimi/



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Kullanıcı tanımlı fonksiyon & Trigger çalışması Zeki Gürsoy 10 7.846 31-01-2017, 10:53
Son Mesaj: DogusOzan
access-sql-2 SQL Kullanıcı Tanımlı Fonksiyon (UDF) Yardım ozgur22 7 2.696 21-10-2015, 14:36
Son Mesaj: dsezgin
  Yazıların ilk harfleri büyük diğerlerini küçük yapan SQL Scaler Fonksiyon metinse 4 14.692 14-02-2010, 17:32
Son Mesaj: beab05

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi