sql >> データベース >  >> RDS >> Sqlserver

分割後のSQLソート数値文字列

    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)
    


    1. すべての列の最も一般的な値を取得します

    2. PDOPHPは連想配列からDBに挿入します

    3. SQLServer-行を列に転置

    4. このスタイルのユーザーメッセージングを実現するためのより簡単な方法はありますか?