ホームページ >データベース >mysql チュートリアル >SQL Server で数値とアルファベットの値が混在する VARCHAR 列を数値的に並べ替えるにはどうすればよいですか?
SQL Server で数値を含む VARCHAR 列を並べ替える
数字と文字の両方を含む可能性のある VARCHAR 列を扱う場合、並べ替えでは数値を数値順に並べたい場合は、チャレンジしてください。デフォルトでは、SQL Server はそのような列をアルファベット順に並べ替えますが、この場合は望ましくありません。
望ましい並べ替え動作を実現するには、解決策として数値を文字でパディングして、すべての文字列が同じ長さになるようにする必要があります。これにより、SQL Server はデータを数値的に並べ替えることができます。
このアプローチを示すクエリの例を次に示します。
select MyColumn from MyTable order by case IsNumeric(MyColumn) when 1 then Replicate('0', 100 - Len(MyColumn)) + MyColumn else MyColumn end
このクエリでは、値が数値かどうかを判断するために IsNumeric 関数が使用されます。 。そうである場合、Replicate 関数は先頭にゼロを追加して文字列を固定長 (この例では 100) になるまで埋め込みます。それ以外の場合、値は変更されません。
この式で並べ替えると、数値は埋め込まれて数値順に並べ替えられ、数値以外の値はアルファベット順に並べ替えられます。これにより、元の質問の例に示すように、希望する並べ替え順序が保証されます:
1 2 10 A B B1
以上がSQL Server で数値とアルファベットの値が混在する VARCHAR 列を数値的に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。