PDA

View Full Version : روند كرددن مقدار بازگشتي يك كوئري



happy65_sh
یک شنبه 18 اردیبهشت 1390, 10:15 صبح
سلام
يه كوئري نوشته ام كه يه عدد كه مبلغ يه كالاست را برميگردونه مشكلم اينه كه مثلا عدد را به صورت 25125.12 بر ميگردونه در حالي كه ميخواهم عدد به صورت روند شده برگردونده بشه.(مثلا به جاي عدد بالا 25120 برگردانده بشه) آيا راهي براي اين كار وجود داره؟
اگر بشه با دستورات SQL اين كار را انجام داد خيلي بهتره:لبخند:

ali.rezaei7
یک شنبه 18 اردیبهشت 1390, 11:23 صبح
سلام؛ می تونید از تابع ROUND (http://msdn.microsoft.com/en-us/library/ms175003.aspx) استفاده کنید. این تابع عدد رو با دقت مورد نظر گرد می کنه.

مثال:
SELECT ROUND(filedname,0) AS filedname FROM tablename
به نزدیکترین عدد گرد میشه.

happy65_sh
دوشنبه 19 اردیبهشت 1390, 09:49 صبح
سلام و ممنون
حالا اگه بخواهم يه int را روند تر از چيزي كه هست بكنم چطور؟!:گیج:
مثلا 25102 را 25100 برگرداند

ali.rezaei7
سه شنبه 20 اردیبهشت 1390, 10:08 صبح
سلام و ممنون
حالا اگه بخواهم يه int را روند تر از چيزي كه هست بكنم چطور؟!:گیج:
مثلا 25102 را 25100 برگرداند

عجب کاری! خب تا اونجایی که می دونم در این مورد هیچ راهکاری در برنامه نویسی درنظر گرفته نشده. وباید خودتون این کار رو انجام بدید.
برای گرد کردن یک عدد طبیعی، نیاز داریم که یکان اون عدد رو بدست بیاریم، برای اینکار عدد موردنظر رو بر 10 تقسیم می کنیم، و عددی که در باقیمانده حاصل میشه، یکان عدد میشه (Number Mod 10). اگه یکان کوچکتر از 5 بود عدد به سمت پایین گرد میشه(عدد - یکان) و اگر بزرگتر از 5 بود به سمت بالا گرد میشه(عدد - یکان + 10).

mcandovani
سه شنبه 20 اردیبهشت 1390, 15:50 عصر
سلام

SELECT ROUND( 12.56,0) - ROUND(12.56,0) % 10
البنه بسته به نوع پایگاه داده دستورات باقیمانده و گرد کردن می تونه فرق کنه

این نگارش بالا برای SQLserver می باشد.


خوب نتیجه میشه 10

exlord
سه شنبه 20 اردیبهشت 1390, 16:24 عصر
به همچین کاری هم میتونین بکنین ...
SELECT ROUND(filedname/100,0)*100 AS filedname FROM tablename