سلام.
من یه ستون دارم که از جنس varchar هستش و فقط عدد میگیره.
حال میخوام این ستون رو مانند یک ستون عددی مرتب کنم(آخه اینجوری عدد 2 رو بزرگتر از 10 در نظر میگیره و...)
و میخوام max این ستون رو بدست بیارم.
؟
سلام.
من یه ستون دارم که از جنس varchar هستش و فقط عدد میگیره.
حال میخوام این ستون رو مانند یک ستون عددی مرتب کنم(آخه اینجوری عدد 2 رو بزرگتر از 10 در نظر میگیره و...)
و میخوام max این ستون رو بدست بیارم.
؟
SELECT TOP 1 * FROM table_name ORDER BY column_name + 0 DESC
SELECT TOP 1 * FROM table_name ORDER BY LEN(column_name), column_name DESC
SELECT TOP 1 * FROM table_name ORDER BY CAST(column_name AS INT) DESC
خط مربوط به ORDER BY کوئری دوم بایستی به این تغییر کنه:
SELECT TOP 1 * FROM table_name ORDER BY LEN(column_name) DESC, column_name DESC
CAST کار تبدیل نوع دیتا را انجام میده (دقیقا کار تابع Convery)
اگر فقط عدد در ستون ذخیره میشه میتونید با جمع کردن با عدد صفر کار تبدیل رو به سادگی انجام بدین.
کار CAST رو فهمیدم.
من از روش سوم استفاده کردم.
انتخاب خودت از بین این سه روش چیه؟
فرقی هم با هم دارند؟
مثلا از لحاظ سرعت؟
من ترجیه میدم ستون مورد نظر رو از نوع integer انتخاب کنم تا نیاز به تبدیل نباشه.
روشهایی که گفتم فرق چندانی باهم ندارن در همشون تبدیل یا استفاده تابع وجود داره.