PDA

View Full Version : سوال در مورد order by



ghasemweb
پنج شنبه 05 اسفند 1389, 19:07 عصر
اگر تو جدول ما اطلاعات زیر وجود داشته باشه چطوری میشه مرتب سازی هم طبق عدد باشه هم الفبا که صحیح تر باشه:
1007
106
aaa
bbb

میخوام یه مرتب کنه که مثل زیر بشه ک
106
1007
aaa
bbb

آیا شدنی هست؟

mehdi.mousavi
پنج شنبه 05 اسفند 1389, 20:59 عصر
سلام.
شدنی هستش؟ بله، شدنیه (این روش رو چندی پیش دیده بودم).
اما خوب، روش خوبی برای اینکار وجود داره؟ گمان نمیکنم.



SELECT * FROM myTable
ORDER BY
CASE WHEN ISNUMERIC(col1) = 1 THEN CONVERT(BIGINT, col1) ELSE 9223372036854775807 END,
col1

اینجا من میگم اگر محتوای فیلد فعلی عددی هستش، اونو به عدد تبدیل می کنم (در نتیجه اعداد بر اساس کوچک/بزرگ بودنشون مرتب میشن).
اگر عدد نباشه، یه عدد بزرگ بر میگردونم. به این ترتیب، کلیه Row هایی که فیلد col1 اونها عددی نیست، در انتها قرار میگیرن و اینجا، با اضافه کردن فیلد
col1 به ORDER BY، باعث میشم تا محتوای غیر عددی فیلدها نیز Sort بشه.

موفق باشید.

ghasemweb
یک شنبه 08 اسفند 1389, 22:24 عصر
قبلش تشکر میکنم که جواب دادید ولی من تست کردم با خطای زیر روبرو شدم البته من col1 رو به جاش فیلد دلخواه خدو رو گذاشتم اگر میشه یه کم بیشتر توضیح بدین.


#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BIGINT, col1) ELSE 9223372036854 END, col1 LIMIT 0, 30' at line 3

mehdi.mousavi
یک شنبه 08 اسفند 1389, 23:11 عصر
سلام.
سوال در مورد MySQL هستش و در بخش SQLServer مطرح کرده اید؟
من در مورد MySQL اطلاع چندانی ندارم...

موفق باشید.

پاورقی: لطفا اینو تایید کنید که اگر سوال شما به MySQL مربوط میشه، اونو بخ بخش خودش منتقل کنیم.

ghasemweb
جمعه 13 اسفند 1389, 03:38 صبح
سلام.
سوال در مورد MySQL هستش و در بخش SQLServer مطرح کرده اید؟
من در مورد MySQL اطلاع چندانی ندارم...

موفق باشید.

پاورقی: لطفا اینو تایید کنید که اگر سوال شما به MySQL مربوط میشه، اونو بخ بخش خودش منتقل کنیم.

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