「人間の」アルファベット順ですが、コンピューターのアルファベット順ではないタイトルの投稿の表があります。これらには、数字とアルファベットの 2 つの種類があります。
数値:図 1.9、図 1.10、図 1.11...
アルファベット順:図 1A ... 図 1Z ... 図 1AA
タイトルをorderby
付けると、1.10-1.19 は 1.1 と 1.2 の間にあり、1AA-1AZ は 1A と 1B の間にあるという結果になります。しかし、これは私が望んでいるものではありません。1.10 が 1.9 の後に来て、1AA が 1Z の後に来る「人間の」アルファベット順が欲しいです。
文字列操作(または私が考えていないもの)を使用して必要な順序を取得する方法がSQLにまだあるかどうか疑問に思っています。
私はSQLの専門家ではないので、これが可能かどうかはわかりませんが、条件付き置換を行う方法があれば、これを行うことで必要な順序を課すことができるようです:
ピリオドを削除します (これは で実行できます
replace
よね?)残りの数字が 3 文字を超える場合は
0
、最初の文字の後に (ゼロ) を追加します。
これにより、私が望む結果が得られるように思わ1.9
れ109
ます110
。1Z
になってしまう10Z
、前に来る1AA
。しかし、それはSQLで行うことができますか? もしそうなら、構文は何ですか?
データ自体を変更したくないことに注意してください。説明した順序でクエリの結果を出力するだけです。
これはWordpressのインストールのコンテキストにありますが、PHPではなくMySQLクエリ段階で発生する順序にさまざまなもの(ページネーションなど)が依存するため、質問はより適切にSQLの質問だと思います.