# پایگاه‌های داده > SQL Server > T-SQL >  جدا کردن 3 رقم 3 رقم اعداد برای مقادیر پول

## mohsenm66

من یک جدول دارم که در آن یک فیلد مبلغ دارم که نوع آن int است حالا میخواهم با یه دستوری آن عدد را به صورت 3 رقم 3 رقم جدا کنم و نمایش بدهم . 
آیا چنین دستوری در sql  وجود دارد یا خیر ؟

----------


## یوسف زالی

سلام.
معمولا بهتره این کار ها در UI انجام بشه.
به دلیل اینکه ممکنه کسی بعدا در برنامه لازم داشته باشه روی اون محاسباتی انجام بده.
اما برای سمت اس کیو ال باید یک تابع بنویسید.
من این تابع رو نوشتم و براتون می گذارم:
GetSeparatedNumber.rar

مثال برای استفاده از اون:
select dbo.GetSeparatedNumber(YourField, ',') -- sql

قابلیت کار با داده های اعشاری و منفی رو هم داره.
طبق استاندارد حسابداران منفی ها رو در پرانتز نمایش می ده.
می تونید کاراکتر جداکننده رو هم خودتون انتخاب کنید.
موفق باشید.

----------


## mohsenm66

ببخشید سوالم خیلی ابتدایی است
این تابع را باید در کجا اضافه کنم (در کدام قسمت از توابع )

----------


## یوسف زالی

یک کوئری باز کنید و اون رو ران کنید.
خودش اضافه می شه

----------


## mohsenm66

دوست عزیز تابع شما 3 رقم از عدد را حذف میکنه . فیلد من از نوع int هست ولی فیلد شما از نوع decimal است . من با اجازه شما نوع فیلد را در تابع تغییر دادم ولی باز هم فرقی نکرد . نمیدانم باید چیکار کنم که این مشکل حل بشه. ممنون میشم راهنماییم کنید.

----------


## یوسف زالی

آخ آخ یادم رفت بگم!
عددتون رو در هزار ضرب کنید.
select dbo.GetSeparatedNumber(YourField*1000, ',') -- sql

موفق باشید.

----------


## mohsenm66

آیا باید نوع را از decimal  به int تغییر بدم یا به همون صورتی که هست در 1000 ضرب کنم ؟

----------


## mehdi.mousavi

سلام.
برای اینکار (جدا کردن ارقام سه رقم سه رقم) نیازی به تعریف و استفاده از تابعی مجزا نیست. کافیه تا بدین شکل عمل کنیم:

SELECT CONVERT(VARCHAR, CAST(1234567890 AS MONEY), 1)

خروجی Select فوق، رشته 1,234,567,890.00 خواهد بود.

موفق باشید.

*پاورقی:* مقادیر رو تحت Money Data Type نگهداری کنید، نه int.

----------


## mohsenm66

حالا چطوری میشه 2 رقم اعشار را حذف کرد ؟

----------


## mehdi.mousavi

> حالا چطوری میشه 2 رقم اعشار را حذف کرد ؟


 
DECLARE @Value NVARCHAR(MAX);
SET @Value = CONVERT(VARCHAR, CAST(1234567890.96 AS MONEY), 1)
SET @Value = SUBSTRING(@Value, 0, LEN(@Value) - 2)

----------

