ORDER BY
で文字列関数を実行します 番号のみを削除します。このようなものが機能するはずです:
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)
これにより、最初にIS-
が削除されます 文字列の残りの部分が数字かどうかを確認します。そうである場合は10進数を残し、そうでない場合は.
および次の英字。
これは、小数点以下の桁数の場合の意図した順序が次のようになることを前提としています。
IS-123.A
IS-123.1
IS-123.2
小数/ピリオドの後の内容を気にしない場合は、単純に次のようにします。
ORDER BY CAST(LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1) AS NUMERIC)