SQL で数値が埋め込まれた文字列列を並べ替える
SQL では、特定の手法を使用して数値を含む文字列列を並べ替えることができます。これは、MySQL などのデータベースの自然な並べ替えアルゴリズムでは望ましい結果が得られない場合に役立ちます。
数値を含む文字列列のカスタム 並べ替えを実現するには、いくつかのアプローチを使用できます。
CAST と SUBSTRING の使用:
<code class="sql">SELECT * FROM table ORDER BY CAST(SUBSTRING(column,LOCATE(' ',column)+1) AS SIGNED)</code>
この手法は、列を 2 つの部分 (スペースの前の接頭辞とその後の数値) に分割します。次に、数値は比較のために数値型 (この場合は SIGNED) にキャストされます。
SUBSTRING_INDEX の使用:
<code class="sql">ORDER BY SUBSTRING_INDEX(st, " ", 1) ASC, CAST(SUBSTRING_INDEX(st, " ", -1) AS SIGNED)</code>
このアプローチでは、SUBSTRING_INDEX 関数を使用して、プレフィックスと数値コンポーネントを抽出します。次に、最初に接頭辞で並べ替え、次に変換された数値で並べ替えます。
注: 列パターンが "WORD_space_NUMBER" と異なる場合は、別のアプローチが必要になる可能性があります。
例:
Sample Data | Natural Sorting | Custom Sorting |
---|---|---|
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 |
これらの手法を採用すると、カスタマイズされた方法で数値が埋め込まれた文字列列を並べ替えることができ、結果が特定のアプリケーション要件に確実に一致するようにすることができます。
以上がSQL で数値が埋め込まれた文字列列を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。