首页 > 解决方案 > 当有 unicode 字符用作搜索词时,MySQL LIKE 搜索不起作用

问题描述

我在 MYSQL 中有一个表列,它是 VARCHAR(3000)

我正在像这样进行 LIKE 搜索

SELECT * FROM employee where NAME LIKE N'%$search_term%'

search_term也可以是任何字符和 unicode。

现在我有 3 条记录,分别有这样的描述。它们是英文和 Unicode 字符的混合。

1) 44T8aJeYzU헾⼁놓좟뇘눍㼉㺿䦘ꑷꜺ麂蕟Ỻ壟Ⴡ


2) RHuLKzk4KH헾⼁놓좟뇘눍㼉㺿䦘ꑷꜺ麂蕟Ỻ壟ჁacnT3PvSQy


3) 헾⼁놓좟뇘눍㼉㺿䦘ꑷꜺ麂蕟Ỻ壟ჁZanjmxznnP

我的搜索词是

   헾⼁놓좟뇘눍㼉㺿䦘ꑷꜺ麂蕟ỻ壟ⴡ

我应该得到 3 条记录(如果我将这些值复制到该 search_term 的文本编辑器,我会得到 3 个匹配项)但我得到了空记录。

该列的排序规则是utf8_general_ci,MySQL 版本是 5.7.23

这是 MySQL LIKE Search 的局限性吗?

标签: mysqlunicodeutf-8special-characterssql-like

解决方案


这可以通过设置解决

--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

在 docker-compose.yml


推荐阅读