ホームページ  >  記事  >  バックエンド開発  >  MySQL が中国語のクエリをサポートしていないのはなぜですか?_PHP チュートリアル

MySQL が中国語のクエリをサポートしていないのはなぜですか?_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:52:41964ブラウズ

Q:
クエリ条件を記述するときの問題は次のとおりです:
たとえば、フィールドに「李」という単語を含むすべてのレコードを書き込みたいです
$str="李";
select * from table where field like ' %$str %' ;
「李」という単語を含むレコードに加えて、「李」という単語を含まないレコードもあります。なぜ?

A:
MySQL では、漢字をソートおよび検索するときに、漢字のソートおよび検索結果が間違っています。この状況は MySQL の多くのバージョンで存在します。この問題が解決されない場合、MySQL は実際に中国語を処理できなくなります。
この問題の理由は次のとおりです。MySQL は文字列のクエリ時に大文字と小文字を区別しません。通常、ISO-8859 文字セットがデフォルトの文字セットとして使用されるため、中国語のコード化された文字は比較プロセス中に大文字と小文字が変換されます。この現象を引き起こしました。
方法 1:
解決策は、中国語の文字を含むフィールドに「binary」属性を追加してバイナリ比較を行うことです。たとえば、「name char(10)」を「name char(10)binary」に変更します。
方法 2:
ソース コードを使用して MySQL をコンパイルする場合、MySQL のコンパイル時に --with--charset=gbk パラメータを使用できるため、MySQL は中国語の検索と並べ替えを直接サポートします。
方法 3:
Mysql のlocate関数を使用して決定できます。上記の問題を例に挙げると、使用方法は次のとおりです:
SELECT * FROM table WHERElocate(field,'李') > 0;
このサイトではこの方法を使用していますが、かなり良い感じです。 :P
方法 4:
Select ステートメントを次のように変更します。SELECT * FROM TABLE WHERE FIELDS LIKE BINARY '%FIND%'!

www.bkjia.com本当http://www.bkjia.com/PHPjc/632466.html技術記事 Q: クエリ条件を作成するときに発生する問題は次のとおりです。 たとえば、フィールド $str="李" に単語 "李" を含むすべてのレコードを書き込みたいのですが、フィールド select * from table where field like %$str; %; 表示されたレコード ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。