mysql - 当有 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 的局限性吗?
解决方案
这可以通过设置解决
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
在 docker-compose.yml
推荐阅读
- c - 将一个值增加到特定值,然后再减小到初始起点?
- html - 将 class.bind 与 Aurelia 中 HTML 元素中的原生类结合起来
- .net - 是否可以从 XAF 应用程序的模块中为现有实体提供新字段?
- angular - Api 方法响应在 ngAfterViewInit 之后返回
- c# - 将 .svg 图片添加到幻灯片
- azure - Azure 上的 NVMe SSD
- api - 我发布文件上传(多部分),但它在 swift4 中将空数据发送到 Web 服务
- angular - 大型应用程序的 ngx-translate
- spring - SPRING WS 错过“ ”
- ios - Xcode 9.3 构建上传错误:将更改保存到 Apple 数据库时发生错误。(1015)