PDA

View Full Version : آیا دستور remove در SQL وجود دارد؟



viper2009
شنبه 14 اسفند 1389, 00:06 صبح
با سلام

من در دیتا بیس برنامه ام فیلدی دارم که دیتا های آن به این صورت
87/124
88/547
88/1404
88/2150
88/1110
ذخیره شده اند.
برای مرتب کردن بصورت صعودی مشکل ایجاد شده آنهم این است که وقتی مرتب می کنم اعداد 4 رقمی سمت راست اگر با عدد 1 شروع شده باشند کوچکتر بحساب می آیند و ابتدا آنها مرتب می شوند و اگر سه رقمی باشد و مثلا با 5 شروع شده باشند بعد از اعداد 4 رقمی میان. چطور می توانم این مشکل را حل کنم
از دستور REPLACE استفاده کردم ولی نشد
الان باید کاری کنم که ممیز ها را حذف کنم

"ضمناً نمی خواهم تمام اعداد را یکسان کنم مثلاً تعدادی صفر به اول آنها اضافه کنم چون ممکنه بعده ها یک مشکل دیگه پیدا شود"

حمیدرضاصادقیان
شنبه 14 اسفند 1389, 07:27 صبح
سلام.
این مرتب سازی به صورت رشته ای هست.شما برای مرتب کردن یا باید نوع فیلدها رو عددی قرار بدید یا تغییری در محتوای کدینگتون بدین که مرتب باشند. یک راهش این هست که طول همه آنها یکسان باشند.

Reza_Yarahmadi
شنبه 14 اسفند 1389, 19:05 عصر
اگر تعداد رکوردها زیاد نیست (به میلیون نمیرسه) میتونید زمان مرتب سازی فرمت اعداد رو ثابت کنید و مقدارهای که نیاز به صفر داره رو اصلاح کنید
به مثال زیر توجه کنید.
With TempTable as(
Select '87/124' as Field1
UNION ALL
Select '88/547' as Field1
UNION ALL
Select '88/1404' as Field1
UNION ALL
Select '88/2150' as Field1
UNION ALL
Select '88/1110' as Field1
)
Select * From TempTable
Order by
SubString(Field1, 0, 2) +
Right('0000' + SubString(Field1, 4, Len(Field1) - 4), 4)
در صورتی هم که تعداد رکوردها زیاده ، پیشنهاد میکنم این فیلد رو به 2 فیلد عددی تقسیم کنید که یکی مقدار قبل اسلش و دومی مقدار بعد اسلش رو نگهداری کنه.