PDA

View Full Version : چطور سه رقم سه رقم با کاما در خود SQL جدا کنم؟



رضا جاسبی
یک شنبه 03 آذر 1387, 00:28 صبح
سلام
من مشکلی دارم که می خواهم در نتیجه کوئری رقمهای اعدادم سه رقم سه رقم با کاما جدا بشن. این کار رو می تونم در محیط برنامه نویسیم انجام بدم اما می خوام در خود کوئری و در محیط Enterprise Manager انجام بشه. یک مشکل اینه که اگر در برنامه این کار رو بخوام انجام بدم سیستم خیلی کند میشه. البته فکر می کنم که باید اولا نتیجه اعداد رو با cast به رشته حرفی تبدیل کنم و بعد هم یک فانکشن بنویسم. اما شاید راه بهتری باشه.
منتظر کمک شما دوستان هستم.

SYNDROME
یک شنبه 03 آذر 1387, 06:28 صبح
سلام
من مشکلی دارم که می خواهم در نتیجه کوئری رقمهای اعدادم سه رقم سه رقم با کاما جدا بشن. این کار رو می تونم در محیط برنامه نویسیم انجام بدم اما می خوام در خود کوئری و در محیط Enterprise Manager انجام بشه. یک مشکل اینه که اگر در برنامه این کار رو بخوام انجام بدم سیستم خیلی کند میشه. البته فکر می کنم که باید اولا نتیجه اعداد رو با cast به رشته حرفی تبدیل کنم و بعد هم یک فانکشن بنویسم. اما شاید راه بهتری باشه.
منتظر کمک شما دوستان هستم.
می توانی با نوشتن تابع و فراخوانی آن در Select عدد خود را پاس کنید و یک string دریافت کنید.
عدد را به رشته تبدیل کنید و سپس بعد از هر کاراکتر یک کاما قرار دهید.
موفق باشید

ASKaffash
یک شنبه 03 آذر 1387, 11:54 صبح
سلام
از این تابع استفاده کنید :


Create Function Sprt(@n Bigint)
returns VarChar(50)
As
Begin
Declare @S VarChar(50),@L TinyInt,@R VarChar(50),@Cnt TinyInt,@Cnt3 Tinyint
Select @S=LTrim(Str(Abs(@n),20)),@R='',@L=Len(@S),@Cnt=@L ,@Cnt3=0
While @Cnt>0 Begin
Set @Cnt3=@Cnt3+1
Set @R=SubString(@S,@Cnt,1)+@R
if @Cnt3%3=0 and @Cnt3<>@L
Set @R=','+@R
Set @Cnt=@Cnt-1
End
if @n<0
Set @R='-'+@R
Return @R
End

و نحوه کاربرد :


Select A,B=dbo.Sprt(A) From T