26-03-2010, 23:55
Merhaba arkadaşlar Sayın Mustafa DANABAŞI ait olan rakam okuma sql scaler fonksiyonu
aşağıdadır. Test ettim yazılan rakamı yazı ile sonucunu döndüren güzel bir fonksiyon.
Umarım faydalı olur.
Saygılarımla,
aşağıdadır. Test ettim yazılan rakamı yazı ile sonucunu döndüren güzel bir fonksiyon.
Umarım faydalı olur.
Saygılarımla,
SQL
- SET ANSI_NULLS ON
- SET QUOTED_IDENTIFIER ON
- GO
-
- CREATE FUNCTION [dbo].[RakamOku] (@Sayi BIGINT)
- RETURNS nvarchar(300)
- AS
- BEGIN
- DECLARE @n INT,@i INT,@UcHane INT,@Yed nvarchar(300),@UcluHane nvarchar(300),
- @HangiBasamak INT,@Negatif bit,@BasamakYaz bit,@SONUC nvarchar(300)
- SET @n=9
- SET @SONUC=NULL
- BEGIN
- SET @SONUC=''
- IF (@Sayi=0) SET @SONUC='Sıfır' ELSE BEGIN
- IF (@Sayi<0) BEGIN
- SET @Negatif=1
- SET @Sayi=-@Sayi
- END ELSE SET @Negatif=0
- SET @HangiBasamak=0;
- WHILE (@Sayi>0) BEGIN
- SET @UcHane=@Sayi % 1000
- SET @Sayi=@Sayi / 1000
- IF (@UcHane>0) SET @BasamakYaz=1 ELSE SET @BasamakYaz=0
- IF ((@HangiBasamak=1) AND (@UcHane=1)) SET @UcluHane=''
- ELSE BEGIN
- SET @UcluHane=''
- SET @i=@UcHane%10 SET @UcHane=@UcHane/10
- SET @UcluHane=CASE @i
- WHEN 1 THEN 'Bir'
- WHEN 2 THEN 'İki'
- WHEN 3 THEN 'Üç'
- WHEN 4 THEN 'Dört'
- WHEN 5 THEN 'Beş'
- WHEN 6 THEN 'Altı'
- WHEN 7 THEN 'Yedi'
- WHEN 8 THEN 'Sekiz'
- WHEN 9 THEN 'Dokuz'
- ELSE '' END
- SET @i=@UcHane%10 SET @UcHane=@UcHane/10
- SET @UcluHane=CASE @i
- WHEN 1 THEN 'On'
- WHEN 2 THEN 'Yirmi'
- WHEN 3 THEN 'Otuz'
- WHEN 4 THEN 'Kırk'
- WHEN 5 THEN 'Elli'
- WHEN 6 THEN 'Altmış'
- WHEN 7 THEN 'Yetmiş'
- WHEN 8 THEN 'Seksen'
- WHEN 9 THEN 'Doksan'
- ELSE '' END+@UcluHane
- SET @i=@UcHane%10 --SET @UcHane=@UcHane/10
- IF (@i>0) SET @Yed='Yüz' ELSE SET @Yed=''
- IF (@i>1) SET @Yed=CASE @i
- WHEN 1 THEN 'Bir'
- WHEN 2 THEN 'İki'
- WHEN 3 THEN 'Üç'
- WHEN 4 THEN 'Dört'
- WHEN 5 THEN 'Beş'
- WHEN 6 THEN 'Altı'
- WHEN 7 THEN 'Yedi'
- WHEN 8 THEN 'Sekiz'
- WHEN 9 THEN 'Dokuz'
- ELSE '' END+@Yed
- SET @UcluHane=@Yed+@UcluHane;
- END
- IF (@BasamakYaz=1) SET @SONUC=@UcluHane+CASE @HangiBasamak
- WHEN 1 THEN 'Bin'
- WHEN 2 THEN 'Milyon'
- WHEN 3 THEN 'Milyar'
- WHEN 4 THEN 'Trilyon'
- WHEN 5 THEN 'Katrilyon'
- WHEN 6 THEN 'Kentrilyon'
- WHEN 7 THEN 'Sekstilyon'
- WHEN 8 THEN 'Septilyon'
- WHEN 9 THEN 'Oktilyon'
- ELSE '' END+@SONUC
- SET @HangiBasamak=@HangiBasamak+1
- END
- IF (@Negatif=1) SET @SONUC='Eksi'+@SONUC
- END
- END
- RETURN @SONUC
- END



