Lakukan fungsi string di ORDER BY
untuk menghapus hanya nomor. Sesuatu seperti ini seharusnya bekerja:
SELECT col
FROM table
ORDER BY CAST(CASE WHEN ISNUMERIC(SUBSTRING(col,4,20)) = 1
THEN SUBSTRING(col,4,20)
ELSE LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1)
END AS NUMERIC)
Ini pertama-tama akan menghapus IS-
dan periksa apakah sisa string adalah angka. Jika ya, itu akan meninggalkan angka desimal, jika tidak maka akan menghapus .
dan karakter alfa berikut.
Ini dengan asumsi pengurutan yang Anda maksudkan dalam kasus tempat desimal numerik adalah:
IS-123.A
IS-123.1
IS-123.2
Jika Anda tidak peduli dengan angka setelah desimal/titik, cukup:
ORDER BY CAST(LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1) AS NUMERIC)