5

私はこのクエリでテーブル行を取得しようとしています:

SELECT * FROM `table` WHERE `field` LIKE "%\u0435\u0442\u043e\u0442%"

フィールド自体:

Field                                     
--------------------------------------------------------------------
\u0435\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430

私はそれを適切に機能させることができないようですが。私はすでにバックスラッシュ文字を試してみました:

LIKE "%\\u0435\\u0442\\u043e\\u0442%"
LIKE "%\\\\u0435\\\\u0442\\\\u043e\\\\u0442%"

しかし、どれも機能していないようです。

誰かが私が間違っていることについてヒントを与えることができれば幸いです。前もって感謝します!


編集

問題が解決しました。解決策: クエリの構文を修正した後でも、結果が返されませんでした。フィールドを BINARY にした後、クエリが機能し始めました。

4

2 に答える 2

5

文字列比較関数の下に記載されているように:

ノート

MySQL は文字列で C エスケープ構文を使用するため (たとえば、"<code>\n" で改行文字を表す)、LIKE文字列で使用する "<code>\" を二重にする必要があります。たとえば、「<コード>\n」を検索するには、「<コード>\\n」と指定します。「<code>\」を検索するには、「<code>\\\\」と指定します。これは、バックスラッシュがパーサーによって 1 回削除され、パターン マッチが行われたときに再び削除され、照合対象のバックスラッシュが 1 つ残るためです。

したがって:

SELECT * FROM `table` WHERE `field` LIKE '%\\\\u0435\\\\u0442\\\\u043e\\\\u0442%'

sqlfiddleで参照してください。

于 2012-12-02T16:25:08.857 に答える