2016-07-05 7 views
0

"ae"を検索して "ae"と "Æ"の両方を検索したいと考えています。私はちょうどそれを行う方法を理解することはできません。MYSQL、検索でAEがÆと等しい場合は

私はutf8_german2_ciとutf8_general_ciとして照合を試みました。どちらも、私が読んだことから私が欲しいものだけを行うことができるはずです。しかし、それは機能していないだけです。

ありがとうございます。

+0

あなたが試したことの詳細、少なくとも照合結果を含むテーブル定義、照合を含めて試した照会を提供してください。また、PHPからこれを実行した場合、問題が発生する可能性があります。おそらく、あなたはこの文字のANSI表現をUTF-8文字列に格納しようとします。 – GolezTrol

+0

utf8とlatinの両方の異なる照合のホストを試しました。 PHPとその列をその照合順序に設定することからです。最後に、私が列挙した2つのものが機能するはずであることが分かった(ソースhttp://dev.mysql.com/doc/refman/5.7/en/charset-unicode-sets.html) 現在、私の列はutf8_german2_ciに設定されています。 私が使用している場合 $ result = $ mysqli-> query( "KaartnaamからKaartnaamを選んでください。"%ae% 'COLLATE utf8_german2_ci "); これはAEの結果にのみなります。 COLLATEを削除した場合(DBが同じに設定されていると重複していると思います)、AE結果のみを表示します。 – Viz

+0

"Kaartenからhex( 'Æ')、hex(column_name)を選択します;キャラクターの値がC386であることを示しますか? "select * from information_schema.columns where table_name = 'Kaarten';列の照合がutf8_german2_ciであることを示していますか? –

答えて

1

あなたのコメント(「ちょうど試しましたが、どちらにもあります」)から、データベースまたは接続に何も問題はないことがわかりました。あなたの唯一の問題はLIKEです。 LIKEは "文字単位"の比較を行い、MySQLマニュアルhttp://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.htmlはあなたのケースによく似たイラストを持っています( "SELECT 'LIKE' ae 'COLLATE latin1_german2_ci;"を使用しています)。だから、あなたは期待された振る舞いを見ていますが、s1が '%ae%'やs1のようにs1が '%æ%';のようにtjからselect s1、hex(s1)と言うことができます。

+0

回答ありがとうございます。あなたの例は簡単ですが、そのようなものを人々が何かを検索できる検索スクリプトに組み込む方法を理解する必要があります。 /elseがうまくいくと思いますが間違っているようです。 – Viz

関連する問題