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

SQL Server で英数字の値が混在する VARCHAR 列を数値的に並べ替えるにはどうすればよいですか?

DDD
リリース: 2024-12-30 04:06:08
オリジナル
457 人が閲覧しました

How to Sort VARCHAR Columns with Mixed Alphanumeric Values Numerically in SQL Server?

英数字の値が混在する VARCHAR 列の並べ替え

SQL Server で数字と文字の両方を含めることができる VARCHAR 列を操作する場合、次のことが考えられます。データを数値的に並べ替えるのは困難です。デフォルトでは、これらの列はアルファベット順に並べ替えられるため、予期しない結果が生じる可能性があります。これに対処するには、数値を数値として扱い、数値による並べ替えを実行する戦略が必要です。

効果的な解決策の 1 つは、数値の先頭に文字を埋め込んで、文字列の長さが同じになるようにすることです。このアプローチは、SQL の CASE 式に依存して、値が数値かどうかを判断し、それに応じてパディングを適用します。以下に例を示します。

select MyColumn
from MyTable
order by 
    case IsNumeric(MyColumn) 
        when 1 then Replicate('0', 100 - Len(MyColumn)) + MyColumn
        else MyColumn
    end
ログイン後にコピー

この例では、「MyColumn」は並べ替える VARCHAR 列です。 IsNumeric() は値が数値かどうかをチェックします。 1 (true) が返された場合は、Replicate() 関数を使用して、文字列の長さが 100 文字に達するまで先頭にゼロを追加します (列の実際の長さに一致するようにこの値を調整します)。それ以外の場合、値は変更されず、適切なアルファベット順の並べ替えが可能になります。

この手法を使用すると、数値は数値順に並べ替えられ、アルファベット値はアルファベット順に並べ替えられるカスタムの並べ替え順序を実現でき、より直感的でわかりやすくなります。使用可能な結果セット。

以上がSQL Server で英数字の値が混在する VARCHAR 列を数値的に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート