SQLSql ServerT-SQL

Sql Verilen Sayıyı Yazı ile Para Birimine Dönüştüren Fonksiyon

Sql sayıyı yazıya dönüştürme , Sql Verilen Sayıyı Yazı ile Para Birimine Dönüştürme işlemler inasıl yapılır ?

Sql de verilen sayı nasıl yazı ile para birimine dönüştürülür ? Özellikle fatura,irsaliye tarzı finans işlemi içeren programlarda sıkça ihtiyaç duyulur. Aşağıdaki Fonksiyonu çalıştırdıktan sonra Kullandığınız programa entegre edebilirsiniz , kullanım şekli şu şekildedir

SELECT dbo.fn_RakamiYaziyaDonustur(190.37, ‘TRY’)

ÇIKTI  : YÜZDOKSAN.TL.OTUZYEDİ.Kr.

Eğer sadece sayıyı yazıya dönüştürmek isterseniz fonksiyonda para birimi kısımlarını revize edebilirsiniz.

 


CREATE FUNCTION [dbo].[fn_RakamiYaziyaDonustur](@Sayi MONEY, @CurrencyCode CHAR(5))
RETURNS VARCHAR(MAX)
AS
BEGIN
declare @YaziIle varchar(max)
declare @Uzunluk smallint
declare @TamKisim as numeric(16,0)
declare @KurusKisim as numeric(16,2)
declare @sSayi varchar(50)
declare @i integer
declare @j integer
declare @k integer
declare @deger integer
declare @deger000 integer
set @TamKisim = floor(@Sayi)
set @KurusKisim = (@Sayi – floor(@Sayi))*100
set @i = 1
set @Uzunluk = len(@TamKisim)
set @YaziIle = ”
set @sSayi =ltrim(rtrim( str(@TamKisim)))
while (@i <= @Uzunluk)
begin
set @deger = cast (substring(@sSayi, @i, 1) as integer)
set @j = @Uzunluk -@i +1
set @k = @j%3
if @k= 1
begin
–if @deger <> 0
–begin
if @deger = 1 begin set @YaziIle = @YaziIle + ‘BİR’ end
if @deger = 2 begin set @YaziIle = @YaziIle + ‘İKİ’ end
if @deger = 3 begin set @YaziIle = @YaziIle + ‘ÜÇ’ end
if @deger = 4 begin set @YaziIle = @YaziIle + ‘DÖRT’ end
if @deger = 5 begin set @YaziIle = @YaziIle + ‘BEŞ’ end
if @deger = 6 begin set @YaziIle = @YaziIle + ‘ALTI’ end
if @deger = 7 begin set @YaziIle = @YaziIle + ‘YEDİ’ end
if @deger = 8 begin set @YaziIle = @YaziIle + ‘SEKİZ’ end
if @deger = 9 begin set @YaziIle = @YaziIle + ‘DOKUZ’ end
if @j>3
begin
set @k=@J/3
if @k = 1 begin set @YaziIle = @YaziIle + ‘BİN’ end
if @k = 2 begin set @YaziIle = @YaziIle + ‘MİLYON’ end
if @k = 3 begin set @YaziIle = @YaziIle + ‘MİLYAR’ end
if @k = 4 begin set @YaziIle = @YaziIle + ‘TRİLYON’ end
if @k = 5 begin set @YaziIle = @YaziIle + ‘TRİLYAR’ end
end
–end
END
if @k= 2
begin
if @deger <> 0
begin
if @deger = 1 begin set @YaziIle = @YaziIle + ‘ON’ end
if @deger = 2 begin set @YaziIle = @YaziIle + ‘YİRMİ’ end
if @deger = 3 begin set @YaziIle = @YaziIle + ‘OTUZ’ end
if @deger = 4 begin set @YaziIle = @YaziIle + ‘KIRK’ end
if @deger = 5 begin set @YaziIle = @YaziIle + ‘ELLİ’ end
if @deger = 6 begin set @YaziIle = @YaziIle + ‘ALTMIŞ’ end
if @deger = 7 begin set @YaziIle = @YaziIle + ‘YETMİŞ’ end
if @deger = 8 begin set @YaziIle = @YaziIle + ‘SEKSEN’ end
if @deger = 9 begin set @YaziIle = @YaziIle + ‘DOKSAN’ end
end
end
if @k= 0
begin
set @deger000 = cast (substring(@sSayi, @i, 3) as integer)
if @deger000 = 0
begin
set @i = @i + 2
end
If @deger <> 0 and @deger000 <> 0
begin
if @deger = 1 begin set @YaziIle = @YaziIle + ‘YÜZ’ end
if @deger = 2 begin set @YaziIle = @YaziIle + ‘İKİYÜZ’ end
if @deger = 3 begin set @YaziIle = @YaziIle + ‘ÜÇYÜZ’ end
if @deger = 4 begin set @YaziIle = @YaziIle + ‘DÖRTYÜZ’ end
if @deger = 5 begin set @YaziIle = @YaziIle + ‘BEŞYÜZ’ end
if @deger = 6 begin set @YaziIle = @YaziIle + ‘ALTIYÜZ’ end
if @deger = 7 begin set @YaziIle = @YaziIle + ‘YEDİYÜZ’ end
if @deger = 8 begin set @YaziIle = @YaziIle + ‘SEKİZYÜZ’ end
if @deger = 9 begin set @YaziIle = @YaziIle + ‘DOKUZYÜZ’ end
end
end
set @i = @i + 1

end
if substring(@YaziIle,1,6) = ‘BİRBİN’
begin
SET @YaziIle = REPLACE(@YaziIle,’BİRBİN’,’BİN’) + CASE WHEN @CurrencyCode = ‘TRY’ THEN ‘.TL.’
WHEN @CurrencyCode = ‘USD’ THEN ‘.USD.’
WHEN @CurrencyCode = ‘EUR’ THEN ‘.EUR.’
WHEN @CurrencyCode = ‘GBP’ THEN ‘.GBP.’
ELSE @CurrencyCode END

end
SET @YaziIle = @YaziIle + CASE WHEN @CurrencyCode = ‘TRY’ THEN ‘.TL.’
WHEN @CurrencyCode = ‘USD’ THEN ‘.USD.’
WHEN @CurrencyCode = ‘EUR’ THEN ‘.EUR.’
WHEN @CurrencyCode = ‘GBP’ THEN ‘.GBP.’
ELSE @CurrencyCode END
—————
set @TamKisim = @KurusKisim
set @i = 1
set @Uzunluk = len(@TamKisim)
set @sSayi =ltrim(rtrim( str(@TamKisim)))
while (@i <= @Uzunluk)
begin
set @deger = cast (substring(@sSayi, @i, 1) as integer)
set @j = @Uzunluk -@i +1
set @k = @j%3
if @k= 1
begin
–if @deger <> 0
–begin
if @deger = 1 begin set @YaziIle = @YaziIle + ‘BİR’ end
if @deger = 2 begin set @YaziIle = @YaziIle + ‘İKİ’ end
if @deger = 3 begin set @YaziIle = @YaziIle + ‘ÜÇ’ end
if @deger = 4 begin set @YaziIle = @YaziIle + ‘DÖRT’ end
if @deger = 5 begin set @YaziIle = @YaziIle + ‘BEŞ’ end
if @deger = 6 begin set @YaziIle = @YaziIle + ‘ALTI’ end
if @deger = 7 begin set @YaziIle = @YaziIle + ‘YEDİ’ end
if @deger = 8 begin set @YaziIle = @YaziIle + ‘SEKİZ’ end
if @deger = 9 begin set @YaziIle = @YaziIle + ‘DOKUZ’ end
if @j>3
begin
set @k=@J/3
if @k = 1 begin set @YaziIle = @YaziIle + ‘BİN’ end
if @k = 2 begin set @YaziIle = @YaziIle + ‘MİLYON’ end
if @k = 3 begin set @YaziIle = @YaziIle + ‘MİLYAR’ end
if @k = 4 begin set @YaziIle = @YaziIle + ‘TRİLYON’ end
if @k = 5 begin set @YaziIle = @YaziIle + ‘TRİLYAR’ end
end
–end
END
if @k= 2
begin
if @deger <> 0
begin
if @deger = 1 begin set @YaziIle = @YaziIle + ‘ON’ end
if @deger = 2 begin set @YaziIle = @YaziIle + ‘YİRMİ’ end
if @deger = 3 begin set @YaziIle = @YaziIle + ‘OTUZ’ end
if @deger = 4 begin set @YaziIle = @YaziIle + ‘KIRK’ end
if @deger = 5 begin set @YaziIle = @YaziIle + ‘ELLİ’ end
if @deger = 6 begin set @YaziIle = @YaziIle + ‘ALTMIŞ’ end
if @deger = 7 begin set @YaziIle = @YaziIle + ‘YETMİŞ’ end
if @deger = 8 begin set @YaziIle = @YaziIle + ‘SEKSEN’ end
if @deger = 9 begin set @YaziIle = @YaziIle + ‘DOKSAN’ end
end
end
if @k= 0
begin
set @deger000 = cast (substring(@sSayi, @i, 3) as integer)
if @deger000 = 0
begin
set @i = @i + 2
end
If @deger <> 0 and @deger000 <> 0
begin
if @deger = 1 begin set @YaziIle = @YaziIle + ‘YÜZ’ end
if @deger = 2 begin set @YaziIle = @YaziIle + ‘İKİYÜZ’ end
if @deger = 3 begin set @YaziIle = @YaziIle + ‘ÜÇYÜZ’ end
if @deger = 4 begin set @YaziIle = @YaziIle + ‘DÖRTYÜZ’ end
if @deger = 5 begin set @YaziIle = @YaziIle + ‘BEŞYÜZ’ end
if @deger = 6 begin set @YaziIle = @YaziIle + ‘ALTIYÜZ’ end
if @deger = 7 begin set @YaziIle = @YaziIle + ‘YEDİYÜZ’ end
if @deger = 8 begin set @YaziIle = @YaziIle + ‘SEKİZYÜZ’ end
if @deger = 9 begin set @YaziIle = @YaziIle + ‘DOKUZYÜZ’ end
end
end
set @i = @i + 1

end
—————-
if @KurusKisim = 0
begin
SET @YaziIle = @YaziIle + ‘SIFIR’
end

SET @YaziIle = @YaziIle + CASE WHEN @CurrencyCode = ‘TRY’ THEN ‘.Kr.’
WHEN @CurrencyCode = ‘USD’ THEN ‘.Cents.’
WHEN @CurrencyCode = ‘EUR’ THEN ‘.Cents.’
WHEN @CurrencyCode = ‘GBP’ THEN ‘.Cents.’
ELSE @CurrencyCode END
RETURN RTRIM(@YaziIle)
END
Paylaş

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir