1

SQL クエリを姓でソートする方法を見つけようとしています。これは、顧客の姓に特殊文字が含まれている場合を除いて機能しています。

たとえば、オマリー。

たとえば、この姓が「Omar」の姓でソートされている場合、順序は次のようになります。

オマリー・オマール

しかし、データベースに追加する前にPHPでaddslashes()を使用しているため、ソートは実際にはO\'Maleyで発生しているため、ソートは終了します。

オマー・オマリー

もちろん \ は、ユーザーに表示される前に stripslashes() で削除されます。

これを正しくソートするにはどうすればよいですか?

4

1 に答える 1

0

REPLACE()またはTRANSLATE()sql 関数の使用を検討してください。例えば:

ORDER BY REPLACE(REPLACE(last_name, '\\', ''), ''', '')

上記のREPLACE()関数は、順序付けを行う前にバックスラッシュと一重引用符を削除します。

ORDER BY TRANSLATE(last_name, '\\'', '')

上記のTRANSLATE()関数は、バックスラッシュと一重引用符も削除します。これは、文字列から削除するより多くの文字を指定するためのより良い形式である可能性があります。

注:データベースについて言及していないので、Oracleを想定しています。ほとんどのデータベースには同等の機能があります。

于 2016-02-24T21:54:08.550 に答える