PDA

View Full Version : یک فانکشن برای تبدیل عدد به حروف



nasr
دوشنبه 26 مرداد 1383, 15:18 عصر
سلام
من یه فانکشن می خوام که عدد را بگیره و بصورت حروف نشان دهد

مثلا 123 = صد و بیست و سه

البته من این را در دلفی نوشته ام ولی می خوام این را در SQLServer داشته باشم
ممنون

AminSobati
دوشنبه 26 مرداد 1383, 22:46 عصر
دوست عزیزم،
من فکر میکنم باید آستین ها رو بالا بزنین و با TSQL بنویسیدش! مگر اینکه برنامه نوشته شده در دلفی رو تبدیل به COM Object کنین و در SQL Server ازش استفاده کنین که درد سرش کمتر از نوشتن مجدد با TSQL نیست!

موفق باشین

nasr
چهارشنبه 04 شهریور 1383, 15:46 عصر
سلام
خودم درستش کردم

CREATE FUNCTION adad (@n int)
RETURNS char(30) AS

BEGIN
declare @len int
declare @partsad int
declare @partsadr char(10)
declare @partdah int
declare @partdahr char(10)
declare @partyek int
declare @partyekr char(10)

set @len=len(@n)
if @n=0 return 'sefr'

if @len=3
begin
set @partsad=substring(convert(char,@n),1,1)
set @partdah=substring(convert(char,@n),2,1)
set @partyek=substring(convert(char,@n),3,1)
end
if @len=2
begin
set @partsad=0
set @partdah=substring(convert(char,@n),1,1)
set @partyek=substring(convert(char,@n),2,1)
end
if @len=1
begin
set @partsad=0
set @partdah=0
set @partyek=substring(convert(char,@n),1,1)
end

if @partsad=0 set @partsadr=''
if @partsad=1 set @partsadr='yeksad'
if @partsad=2 set @partsadr='devist'
if @partsad=3 set @partsadr='sisad'
if @partsad=4 set @partsadr='charsad'
if @partsad=5 set @partsadr='pansad'
if @partsad=6 set @partsadr='sheshsad'
if @partsad=7 set @partsadr='haftsad'
if @partsad=8 set @partsadr='hashtsad'
if @partsad=9 set @partsadr='nohsad'

if @partdah=0 set @partdahr=''
if @partdah=2 set @partdahr='bist'
if @partdah=3 set @partdahr='si'
if @partdah=4 set @partdahr='chel'
if @partdah=5 set @partdahr='panjah'
if @partdah=6 set @partdahr='shast'
if @partdah=7 set @partdahr='haftad'
if @partdah=8 set @partdahr='hashtad'
if @partdah=9 set @partdahr='navad'

if @partdah=1
begin
set @partyekr=''
if @partyek=0 set @partdahr='dah'
if @partyek=1 set @partdahr='yazdah'
if @partyek=2 set @partdahr='dvazdah'
if @partyek=3 set @partdahr='sizdah'
if @partyek=4 set @partdahr='chardah'
if @partyek=5 set @partdahr='panzdah'
if @partyek=6 set @partdahr='shanzdah'
if @partyek=7 set @partdahr='hefdah'
if @partyek=8 set @partdahr='hejdah'
if @partyek=9 set @partdahr='nozdah'
goto a
end

if @partyek=1 set @partyekr='yek'
if @partyek=2 set @partyekr='dou'
if @partyek=3 set @partyekr='seh'
if @partyek=4 set @partyekr='char'
if @partyek=5 set @partyekr='panj'
if @partyek=6 set @partyekr='shesh'
if @partyek=7 set @partyekr='haft'
if @partyek=8 set @partyekr='hasht'
if @partyek=9 set @partyekr='noh'





a:
return @partsadr +' '+@partdahr +' '+@partyekr
END

AminSobati
چهارشنبه 04 شهریور 1383, 16:26 عصر
زنده باد! :)

ali_bagheri34
پنج شنبه 26 شهریور 1383, 12:04 عصر
من از تابع شما استفاده کردم ولی بعضی از اعداد را درست جواب نمی دهد ولی آن را تصحیح کردم

AminSobati
پنج شنبه 26 شهریور 1383, 12:19 عصر
دوست عزیزم اگر تابع تصحیح شده رو اینجا Post کنین، دوستان دیگر هم از شما قدردانی میکنند :)

Developer Programmer
شنبه 04 مهر 1383, 17:23 عصر
این sql-server عجب مارمولکیه ها!

AminSobati
شنبه 04 مهر 1383, 18:39 عصر
:idea:

nasr
شنبه 11 مهر 1383, 08:51 صبح
این sql-server عجب مارمولکیه ها! :shock: