ホームページ >データベース >mysql チュートリアル >SQL Server で数値とアルファベットの値が混在する VARCHAR 列を数値的に並べ替えるにはどうすればよいですか?

SQL Server で数値とアルファベットの値が混在する VARCHAR 列を数値的に並べ替えるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 01:52:40406ブラウズ

How to Sort VARCHAR Columns with Mixed Numeric and Alphabetic Values Numerically in SQL Server?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。