SQL で数値が埋め込まれた文字列列を並べ替える
SQL では、特定の手法を使用して数値を含む文字列列を並べ替えることができます。これは、MySQL などのデータベースの自然な並べ替えアルゴリズムでは望ましい結果が得られない場合に役立ちます。
数字を含む文字列列のカスタム 並べ替えを実現するには、いくつかのアプローチを使用できます:
CAST と SUBSTRING の使用:
SELECT *
FROM table
ORDER BY CAST(SUBSTRING(column,LOCATE(' ',column) 1) AS SIGNED)
この手法は、列を 2 つの部分 (スペースの前のプレフィックスとその後の数値) に分割します。次に、数値は比較のために数値型 (この場合は SIGNED) にキャストされます。
Using SUBSTRING_INDEX:
ORDER BY SUBSTRING_INDEX(st, " ", 1) ASC, CAST(SUBSTRING_INDEX(st, " ", -1) AS SIGNED)
このアプローチでは、SUBSTRING_INDEX 関数を使用してプレフィックスと数値コンポーネントを抽出します。次に、最初に接頭辞で並べ替え、次に変換された数値で並べ替えます。
注: 列パターンが "WORD_space_NUMBER" と異なる場合は、別のアプローチが必要になる可能性があります。
]例:
サンプルデータ | 自然な並べ替え | カスタム並べ替え |
---|---|---|
a 1、a 12、a 6、a 11 | a 1、a 12、a 2、a 3 | a 1、a 2、a 3、a 12 |
b 1、b 12、b 6、b 11 | b 1、b 12、b 2、b 3 | b 1、b 2、b 3、b 12 |
これらの手法を採用すると、カスタマイズされた方法で数値が埋め込まれた文字列列を並べ替えることができ、結果が特定のアプリケーション要件に確実に一致するようにすることができます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3