首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当使用unicode字符作为搜索词时,MySQL LIKE搜索不起作用

当使用Unicode字符作为搜索词时,MySQL LIKE搜索可能不起作用的原因是MySQL默认情况下使用的是非Unicode字符集,而Unicode字符集包含了更广泛的字符范围。

为了解决这个问题,可以采取以下几种方法:

  1. 修改MySQL字符集:可以通过修改MySQL的字符集配置,将其设置为支持Unicode字符集的字符集,例如utf8mb4。具体操作可以参考MySQL官方文档或者相关的MySQL配置指南。
  2. 使用全文搜索引擎:MySQL提供了全文搜索引擎插件,如MySQL全文搜索(MySQL Full-Text Search)或Elasticsearch等。这些插件可以更好地支持Unicode字符的搜索,并提供更高级的搜索功能。
  3. 使用正则表达式:MySQL提供了REGEXP运算符,可以使用正则表达式进行更灵活的搜索。可以使用正则表达式来匹配Unicode字符,实现更准确的搜索。
  4. 使用外部工具或库:如果MySQL内置的搜索功能无法满足需求,可以考虑使用外部的搜索工具或库,如Apache Lucene、Sphinx等。这些工具和库提供了更强大的搜索功能,并且支持Unicode字符的搜索。

总结起来,解决MySQL LIKE搜索Unicode字符不起作用的问题可以通过修改MySQL字符集、使用全文搜索引擎、使用正则表达式或者使用外部工具或库来实现。具体选择哪种方法取决于具体的需求和场景。

腾讯云相关产品:腾讯云提供了云数据库 MySQL,可以通过配置字符集来支持Unicode字符的搜索。具体产品介绍和配置指南可以参考腾讯云官方网站的云数据库 MySQL文档:https://cloud.tencent.com/document/product/236/3130

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL 正则表达式 - 自带函数

如果在 match_type 中指定了指定矛盾选项的字符,则最右边的字符优先。         默认情况下,正则表达式操作在决定字符类型和执行比较使用 expr 和 pat 参数的字符集和排序规则。...在 MySQL 8.0.17 之前,此函数返回的结果使用了 UTF-16 字符集;在 MySQL 8.0.17 及更高版本中,使用搜索匹配的表达式的字符集和排序规则。...在 MySQL 8.0.17 之前,此函数返回的结果使用了 UTF-16 字符集;在 MySQL 8.0.17 及更高版本中,使用搜索匹配的表达式的字符集和排序规则。...这意味着,传递给此类函数使用多个块的字符可能会产生意想不到的结果,例如此处所示: mysql> SELECT REGEXP_INSTR('b', 'b'); +------------------... REGEXP_SUBSTR() 或类似函数开始在字符中间搜索,表情符号和其他4字节字符可能会出现另一个问题。以下示例中的两个语句中的每一个都从第一个参数中的第二个2字节位置开始。

43920

Mysql全文索引的使用

日常我们使用MySQL查询,大部分的查询都是定值或者范围查询.类似于下面这样: select * from table where id = 1 select * from table where...id > 20 但是当在MySQL中存储了文本,比如某个字段的值为坚决贯彻党的十八大精神,我们想用贯彻和十八大作为关键字都可以搜索到这条记录.那么只能使用like关键字.而对于like我们知道,不是用左边前缀搜索的时候...MySQL的全文索引查询有多种模式,我们一般经常使用两种. 1. 自然语言搜索 就是普通的包含关键词的搜索. 2....* FROM articles WHERE MATCH (title,body) AGAINST ('+精神 -贯彻' IN BOOLEAN MODE); Empty set (0.01 sec) 搜索必须命中精神...对于全文索引的需求,如果只是很小的数据量,且对搜索结果的精确度和可定制化程度要求不高的话,可以使用MySQL的全文索引,如果是专门的做搜索,对搜索中的分词以及结果都有较高的要求,建议还是使用lucene

1.1K20
  • MySQL 全文索引应用简明教程

    类型的列上面创建全文索引 像普通索引一样,可以在定义表指定,也可以在创建表后添加或者修改 对于一个大数量级记录插入,向没有索引的表中插入数据后创建索引比向有索引的数据表中插入的过程要快很多 搜索字符串必须是一个常量字符串...MODE 的情况) 特点: 对于搜索字符串中的字符都解析为正常的字符,没有特殊意义 对屏蔽字符列表中的字符串进行过滤 记录的选择性超过50%的时候,通常被认为是不匹配。...,而且返回的第一行中却不包含搜索词中的任意字符串。...如官方网站中提供的实例(搜索含有mysql字符串 且 不含Yousql的语句): ? 可见,我们对搜索的控制又多了一些,看起来“高大上”了些。...了解了基本的mysql全文索引知识,觉得它的全文索引比like当然是强了很多。但是面对高级的搜索还是略显简陋,且性能问题也是担忧。 本人只是作为入门了解,也是对官网一些基本知识的翻译。

    1.6K100

    MySQL多层级树形结构表的搜索查询优化

    MySQL多层级树形结构表的搜索查询优化 业务中有思维导图的功能,涉及到大量的树形结构搜索、查询相关的功能,使用场景上查询量远高于增删改操作,记录一下当前的解决方案。...查询ID为“5”的节点的所有子级、孙子级中name包含“搜索词”的记录 更新表后的查询方式: -- 查询父级节点记录,获取到父级的path select * from nodes where id =...5; -- 通过父级path进行模糊查询 select * from nodes where (parent_id = 5 or path like '0,5,%') and name like '%...搜索词%'; 可以创建一个触发器,在插入、修改数据,更新子级的path。...MySQL多层级树形结构表的搜索查询优化 使用WordPress作为小程序后端——APPID有效性前置检查 使用WordPress作为小程序后端——小程序请求前置检查 Windows rclone挂载sftp

    1.3K50

    mysql优化总结

    bug收集:专门解决与收集bug的网站 网址:www.bugshouji.com mysql查询语句优化分享,不同的关键字的效率哪个更高?...关键字与通配符的使用搜索字符型字段,我们有时会使用 LIKE 关键字和通配符,这种做法虽然简单,但却也是以牺牲系统性能为代价的。...例如下面的查询将会比较表中的每一条记录 SELECT * FROM books WHERE name like "MySQL%" 但是如果换用下面的查询,返回的结果一样,但速度就要快上很多.....SELECT * FROM books WHERE name>="MySQL"and name<"MySQM" 最后,应该注意避免在查询中让MySQL进行自动类型转换,因为转换过程也会使索引变得不起作用...只需要少数字段,用具体的字段,代替 select * 4. 想得到用户条数,用count(1) 代替select 出结果

    30510

    SQL模糊查询语句(like)

    注释 使用 LIKE 进行字符串比较,模式字符串中的所有字符都有意义,包括起始或尾随空格。...LIKE 的模式匹配 搜索 datetime 值,推荐使用 LIKE,因为 datetime 项可能包含各种日期部分。...Unicode 数据(nchar 或 nvarchar 数据类型)使用 LIKE ,尾随空格是有意义的。但是对于非 Unicode 数据,尾随空格没有意义。...将通配符作为文字使用 可以将通配符模式匹配字符串用作文字字符串,方法是将通配符放在括号中。下表显示了使用 LIKE 关键字和 [ ] 通配符的示例。...若要搜索作为字符而不是通配符的百分号,必须提供 ESCAPE 关键字和转义符。例如,一个样本数据库包含名为 comment 的列,该列含文本 30%。

    2.7K30

    Java之mysqlJava服务端对emoji的支持

    问题描述: 如果UTF8字符集且是Java服务器的话,存储含有emoji表情,会抛出类似如下异常: java.sql.SQLException: Incorrect string value:...你可以通过应用层面转换emoji等特殊字符,以达到原DB的兼容,我认为可行,但是你可能走了弯路。 utf8mb4作为utf8的super set,完全向下兼容,所以不用担心字符的兼容性问题。...mysql版本查看命令请看:查看mysql版本的四种方法;mysql安装步骤请看:Linux中升级MysqlMysql最新版本的方法 2.修改database、table和column字符集。...LIKE 'character_set_%' OR Variable_name LIKE 'collation%'; 检查是否如下: +--------------------------+---...关于这些字符集配置是干什么用的,有什么区别,请参考:深入Mysql字符集设置 5.如果你用的是java服务器,升级或确保你的mysql connector版本高于5.1.13,否则仍然无法使用utf8mb4

    30220

    深入理解MySQL字符集及校对规则(一)

    character_set_client变量作为客户端发送的SQL语句中使用字符集。...collation_connection对于字符串的比较是非常重要的。对于字符类型的字段值的比较,collation_connection是不起作用的。...; 查看当前字符集和校对规则设置 mysql> show variables like ‘collation_%’; 以collation_开头的都是用来做列校对规则的。...1、安装MySQL使用了一个默认的服务器字符集,这个字符集是Latin1。 2、编译MySQL可以手动指定一个默认服务器字符集和校对规则,参数为: cmake ....MySQL客户端的编码方式(所以此参数需要正确反映客户端对应的编码) ③MySQL发现客户端的client所传输的字符集与自己的connection不一样,会将client的字符集转换为connection

    1.4K10

    MySQL字符集及其排序规则

    除了上述常见的排序规则,MySQL还提供了其他一些排序规则,如utf8mb4_unicode_520_ci、utf8mb4_unicode_520_bin等。这些规则可以根据具体需求选择使用。...---- 默认排序规则 ---- 设置表的默认字符集为utf8mb4字符集但未明确指定排序规则: 在MySQL 5.7版本中,默认排序规则为utf8mb4_general_ci。...它定义了在创建新表使用的默认字符集校对规则 查看当前MySQL服务器的collation_server的值: SHOW VARIABLES LIKE 'collation_server'; 该命令将返回一个结果集...MySQL新增参数default_collation_for_utf8mb4用于控制使用utf8mb4字符的默认排序规则,取值为utf8mb4_0900_ai_ci或utf8mb4_general_ci...其他使用utf8mb4但未指定编码规则

    1.5K20

    解决微信emjoy特殊符号插入数据库出错

    mysql报错内容: 根据上图看见,是mysql对特殊号的报错。 方案概况: 针对符号的报错,搜索了有没有解决方案,并且发现了有两个解决方法。 修改mysql的编码。...对字符过滤后再插入数据库 具体方案: 1、修改mysql的编码: Mysql的utf8编码最多3个字节,而Emoji表情或者某些特殊字符是4个字节。...重启mysql服务 修改表 ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; 2、特殊字符过滤: 其实很多时候数据库中储存的微信昵称完整性不是特别重要...保存为“小蕾” ,可以考虑直接过滤特殊字符,这样的优点是不用担心修改mysql编码过程中造成其他错误。...show variables like 'innodb_file_format'; 最后修改mysql配置文件并且重启才真正生效 my.cnf一般在etc/mysql/my.cnf位置。

    57810

    其实 MySQL 中的 like 关键字也能用索引!

    我们常说,MySQL 中的 like 要慎用,因为会全表扫描,这是一件可怕的事!...当然我们也可以匹配第一个字段的前几个字符,如下: select username,age from user2 where username like 'j%'; 执行计划如下: 从这执行计划中首先可以确认这个查询也用到了...username 排序存储,如果 username 相同,则按照 age 排序存储,结构类似下面这样: username age a 88 b 89 c 89 c 90 c 99 d 88 d 99 所以想要搜索以...j 开头的 username ,只需要定位到第一个以 j 开头的 username,然后利用 B+Tree 叶子结点之间的双向链表继续向后读取,读到第一个不是以 j 开头的 username 截止...如果大家不懂覆盖索引戳这里:是时候检查一下使用索引的姿势是否正确了!。 如果大家不懂回表戳这里:什么是 MySQL 的“回表”?。

    3.1K20

    cherryPy学习

    url参数映射 (搜索词cherrypy add url parameter) class Root: @cherrypy.expose def check(self): return "hello...param=123”就出现 "Nothing matches the given URI" 错误 尝试了几种搜索词发现,url参数必须在方法的参数列表中给出 原文 : http://tools.cherrypy.org...http://genshi.edgewall.org conf文件配置编码: tools.encode.on:True tools.encode.encoding: 'utf-8' 不设置在浏览器打开可能使用默认编码导致中文乱码...CherryPy返回xml页面 需要指定 Content-type text/xml 上传字节流则需要指定 Content-type为 text/plain CherrpPy获取链接中的参数,类型为unicode...需要转换为 string类型,否则可能出现 字符串相同,但程序结果不一致问题 启动host设置 新增了个服务器,启动写localhost怎么都访问不了,写ip只能在本机访问,刚开始还以为和其他服务器一样

    1K60

    又谈mysql,面试官问表结构设计要注意啥?

    超出 65536 个字符,可以使用更大的字符类型 TEXT 或 BLOB,两者最大存储长度为 4G,其区别是 BLOB 没有字符集属性,纯属二进制存储。...但是某些 emoji 表情字符无法在 UTF8 字符集下存储,所以推荐把 MySQL 的默认字符集设置为 UTF8MB4。 修改列字符集的命令应该使用 ALTER TABLE ......排序规则 排序规则(Collation)是比较和排序字符串的一种规则,每个字符集都会有默认的排序规则,可以使用命令 SHOW CHARSET 来查看: mysql> SHOW CHARSET LIKE...同时,插入非法数据MySQL 会显式地抛出违法约束的提示(Check constraint 'user_chk_1' is violated.)。...反范式化可以减少关联查询,join表的次数。 在一些场景下,可以通过 JSON 数据类型进行反范式设计,提升存储效率。 ---- 图片及部分相关技术知识点来源于网络搜索,侵权删!

    75320

    MySQL、ES、HBASE等技术一起探讨下!

    = 或 或 or 或表达式或函数(左侧) like 语句 % 开头 字符串未加’’ 索引字段区分度过低,如性别 未匹配最左前缀 (一张嘴就知道老面试题了) 为什么这些做法会导致失效,成熟的 MySQL...函数操作 当在 查询 where = 左侧使用表达式或函数,如字段 A 为字符串型且有索引, 有 where length(a) = 6查询,这时传递一个 6 到 A 的索引树,不难想象在树的第一层就迷路了...隐式转换 隐式类型转换和隐式字符编码转换也会导致这个问题。 隐式类型转换对于 JOOQ 这种框架来说一般倒不会出现。 隐式字符编码转换在连表查询倒可能出现,即连表字段的类型相同但字符编码不同。...破坏了有序性 至于 Like 语句 % 开头、字符串未加 ’’ 原因基本一致,MySQL 认为对索引字段的操作可能会破坏索引有序性就机智的优化掉了。...Discover 中加上 “” 和 console 中的 match_phrase 都代表这是一个短语匹配,意味着只保留那些包含全部搜索词项,且位置与搜索词项相同的文档。

    51910

    高并发下如何完成一次快速的查询

    = 或 或 or 或表达式或函数(左侧) like 语句 % 开头 字符串未加’’ 索引字段区分度过低,如性别 未匹配最左前缀 (一张嘴就知道老面试题了) 为什么这些做法会导致失效,成熟的 MySQL...函数操作 当在 查询 where = 左侧使用表达式或函数,如字段 A 为字符串型且有索引, 有 where length(a) = 6查询,这时传递一个 6 到 A 的索引树,不难想象在树的第一层就迷路了...隐式转换 隐式类型转换和隐式字符编码转换也会导致这个问题。 隐式类型转换对于 JOOQ 这种框架来说一般倒不会出现。 隐式字符编码转换在连表查询倒可能出现,即连表字段的类型相同但字符编码不同。...破坏了有序性 至于 Like 语句 % 开头、字符串未加 ’’ 原因基本一致,MySQL 认为对索引字段的操作可能会破坏索引有序性就机智的优化掉了。...Discover 中加上 “” 和 console 中的 match_phrase 都代表这是一个短语匹配,意味着只保留那些包含全部搜索词项,且位置与搜索词项相同的文档。

    94030

    MySQL从删库到跑路(二)——MySQL字符集与乱码解析

    二、MySQL字符集 1、MySQL环境变量 Session会话变量: 使用show variables like '%char%';可以查看Session会话的字符集变量: ?...MySQL数据库的环境变量查看使用SQL语句show variables like '%char%'; character_set_client:客户端使用字符集,客户端向服务器发送请求,请求以客户端字符集进行编码...character_set_system:系统元数据(字段名等)使用字符客户端连接服务器的时候,客户端会将自己想要的字符集名称发给MySQL服务端,然后服务端就会使用字符集去设置character_set_connection...创建数据库如果不指定数据库的字符集,默认会使用character_set_server字符集。 创建表如果不指定表的字符集,默认使用当前数据库字符集。...创建列如果不指定字符集,默认使用当前表的字符集。 3、MySQL字符集的设置 A、MySQL服务器级字符集 修改MySQL服务器配置文件/etc/my.cnf文件。

    82120

    2020年度总结了这 50 道 MySQL 高频面试题!

    CHAR_LENGTH是字符数,而LENGTH是字节数。Latin字符的这两个数据是相同的,但是对于Unicode和其他编码,它们是不同的。...ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表使用。...REGEXP是模式匹配,其中匹配模式在搜索值的任何位置。 11、CHAR和VARCHAR的区别?...以下是CHAR和VARCHAR的区别: CHAR和VARCHAR类型在存储和检索方面有所不同 CHAR列长度固定为创建表声明的长度,长度值范围是1到255 CHAR值被存储,它们被用空格填充到特定长度...、LIKE声明中的%和_是什么意思? %对应于0个或更多字符,_只是LIKE语句中的一个字符。 29、如何在Unix和Mysql时间戳之间进行转换?

    4K20
    领券