نمایش نتایج 1 تا 6 از 6

نام تاپیک: مرتب کردن اعدا در یک فیلد غیر عددی

  1. #1

    Red face مرتب کردن اعدا در یک فیلد غیر عددی

    سلام.

    من یه ستون دارم که از جنس varchar هستش و فقط عدد میگیره.
    حال میخوام این ستون رو مانند یک ستون عددی مرتب کنم(آخه اینجوری عدد 2 رو بزرگتر از 10 در نظر میگیره و...)

    و میخوام max این ستون رو بدست بیارم.

    ؟

  2. #2

    نقل قول: مرتب کردن اعدا در یک فیلد غیر عددی

    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

  3. #3

    نقل قول: مرتب کردن اعدا در یک فیلد غیر عددی

    نقل قول نوشته شده توسط msalim مشاهده تاپیک
    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
    من از روش سوم بیشتر خوشم اومد.
    راستی کار این CAST چی هستش؟

  4. #4

    نقل قول: مرتب کردن اعدا در یک فیلد غیر عددی

    خط مربوط به ORDER BY کوئری دوم بایستی به این تغییر کنه:
    SELECT TOP 1 * FROM table_name ORDER BY LEN(column_name) DESC, column_name DESC

    CAST کار تبدیل نوع دیتا را انجام میده (دقیقا کار تابع Convery)

    اگر فقط عدد در ستون ذخیره میشه میتونید با جمع کردن با عدد صفر کار تبدیل رو به سادگی انجام بدین.

  5. #5

    نقل قول: مرتب کردن اعدا در یک فیلد غیر عددی

    کار CAST رو فهمیدم.
    من از روش سوم استفاده کردم.
    انتخاب خودت از بین این سه روش چیه؟
    فرقی هم با هم دارند؟
    مثلا از لحاظ سرعت؟

  6. #6

    نقل قول: مرتب کردن اعدا در یک فیلد غیر عددی

    من ترجیه میدم ستون مورد نظر رو از نوع integer انتخاب کنم تا نیاز به تبدیل نباشه.
    روشهایی که گفتم فرق چندانی باهم ندارن در همشون تبدیل یا استفاده تابع وجود داره.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •