MySQL の中国語あいまい検索問題の解決策
mysql|解決策|問題|中国語
MySQL における中国語のあいまい検索の問題の解決策
出典: Lin Xinglu
MySQL で中国語のあいまい検索を実行すると、たとえば「-0x1.ebea4bfbffaacp-4%」を検索すると、無関係なレコードが返されることがよくあります。中国語の文字が返される可能性がありますが、文字は存在しません。
以前にも同様の問題に遭遇したことがありますが、MySQL マニュアルを詳しく読んだところ、非常に便利に解決して満足のいく結果を得る方法があることがわかりました。
例:
· 「タイトル」でニュース データベースを検索したいと考えています。
次の SQL ステートメントのように、キーワードには中国語と英語が含まれる場合があります:
select id,title,name from achech_com.news where title like '- 0x1.ebea4bfbebe84p -4%'
返された結果では、一部のタイトル フィールドには確実に「a」キーワードが含まれていますが、一部は中国語のみですが、
検索結果にも返されます。
解決策は、次のような BINARY 属性を使用して検索します。
select id,title,name from achech_com.news where binary title like '-0x1.ebea4bfbebe84p-4%'
返された結果は以前より正確になっていますが、英語の文字は大文字と小文字が区別されるため、「Achech」
と「achech」の検索結果が異なる場合があります。
BINARY 属性を使用すると前の問題を解決できることがわかったので、MySQL でサポートされている
UCASE 関数と CONCAT 関数を見てみましょう。UCASE はすべての英語を大文字に変換し、CONCAT 関数は文字を接続するために使用されます。 SQL ステートメントを完全に解決したものです:
select id,title,name from achech_com.news where binary ucase(title) like concat('%',ucase('a'),'%')
取得ステップは最初に属性を変更します。結果を正確に取得するには BINARY に指定します。いいねされたタイトル
の内容には大文字と小文字が含まれる可能性があるため、最初に ucase 関数を使用してすべてのフィールドの内容を大文字に変換してから、 like 操作、like 操作はファジーメソッドを使用します。concat を使用する利点は、渡されるキーワードを直接キーワードにできることです。「%」ワイルドカードを使用する必要がなく、「'a'」を直接変数に置き換えるだけです
。どの言語でもすべてが機能します。
もちろん、次のように書くこともできます:
select id,title,name from achech_com.news where binary ucase(title) like ucase('0x0.00020bfbebe08p-1022%')
検索結果は非常に満足のいくものですが、速度がしたがって、N ミリ秒遅くなる可能性があります。
関連情報:
関連:
20.16 検索における大文字と小文字の区別
デフォルトでは、MySQL 検索では大文字と小文字が区別されません (ただし、チェコ語など、大文字と小文字が区別されない文字セットもあります)。これは、col_name で検索する場合を意味します。 「a%」のように、A または a で始まるすべての列の値を取得します。この検索で大文字と小文字を区別する場合は、INDEX(col_name, "A")=0 などを使用して接頭辞を確認します。または、列の値が正確に「A」でなければならない場合は、STRCMP(col_name, "A") = 0 を使用します。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









タイトルは、Web ページのタイトルを定義する意味です。タグ内にあり、ブラウザのタイトル バーに表示されるテキストです。タイトルは、検索エンジンの最適化と Web ページのユーザー エクスペリエンスにとって非常に重要です。 HTML Web ページを作成するときは、より多くのユーザーがクリックして閲覧できるように、関連するキーワードと魅力的な説明を使用してタイトル要素を定義することに注意する必要があります。

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

HTML のタイトルには、Web ページのタイトル タグが表示されます。これにより、閲覧者は現在のページの内容を知ることができるため、各 Web ページには個別のタイトルが必要です。

1. 一致する内容の違い。LIKE ではデータ全体が一致する必要があります。Like では、このフィールドのすべての内容が条件を満たす必要がありますが、REGEXP では部分一致のみが必要で、満たされるフラグメントは 1 つだけです。 2. 一致位置の違い: LIKE は列全体に一致します。一致したテキストが列値にある場合、LIKE はそれを見つけられず、対応する行は返されません (ワイルドカードが使用されない限り)。REGEXP は列値内にあります。一致するテキストが列値にある場合、REGEXP はそれを見つけ、対応する行が返され、REGEXP は列値全体と一致します (LIKE と同じ効果)。 3. SQL ステートメントは、LIKE マッチングとは異なるデータを返します。SQL ステートメント

LIKE 演算子は、WHERE 句の列内の指定されたパターンを検索するために使用されます。構文: SELECTcolumn_name(s)FROMtable_nameWHEREcolumn_nameLIKEpatternpattern これは、指定されたテンプレートが配置される場所であり、ここでは「%」が使用されます (ワイルドカード文字 % とも呼ばれます)。条件の前に配置すると、. で終わるデータが検索されます。 .; 例: % Li % が条件の後に配置される場合、... で始まるデータが検索されます。例: 条件の前後に Li %% が存在する場合、含まれるデータが検索されます。例: % Li % ちょっとした知識ポイント: ERROR1064 (42000):Youhaveane

Union を使用して Like ステートメントを最適化する 1) 場合によっては、クエリ内の比較に or 演算子を使用する必要があります。 or キーワードが where 句で頻繁に使用されすぎると、MySQL オプティマイザがレコードを取得するために誤ってフル テーブル スキャンを選択する可能性があります。 Union 句を使用すると、特にクエリの一方に最適化されたインデックスがあり、もう一方のクエリにも最適化されたインデックスがある場合に、クエリの実行が高速になります。たとえば、first_name と last_name にそれぞれインデックスがある場合、次のクエリ ステートメントを実行します: mysql>select*fromstudentswherefirst_namelike'A

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。

写真が消える問題を解決する方法 まず、写真ファイル $file=$_FILES['userfile']; if(is_uploaded_file($file['tmp_name'])){$query=mysql_query("INSERT INTO gdb_banner() image_src) VALUES ('images/ {$file['name'
