SQL LIKE匹配重复字符串异常:单条大写匹配记录为何被返回?
问题原因及解决方案
原因分析
你的SQL查询返回这条仅含一次大写JUSTIFICATIF DE VOYAGE的记录,核心原因是当前数据库的LIKE操作默认不区分大小写。
查看目标记录内容:开头有大写的JUSTIFICATIF DE VOYAGE,后续文本中还有小写的justificatif de voyage。当LIKE不区分大小写时,这两个字符串都会被判定为匹配JUSTIFICATIF DE VOYAGE,因此你的查询条件%JUSTIFICATIF DE VOYAGE%JUSTIFICATIF DE VOYAGE%会被满足,导致这条记录被错误返回。
解决方案
要严格筛选出包含**两次及以上大写JUSTIFICATIF DE VOYAGE**的记录,需要强制LIKE查询区分大小写,不同数据库的实现方式如下:
MySQL/MariaDB:使用
BINARY关键字强制大小写敏感匹配WHERE raw_text LIKE BINARY '%JUSTIFICATIF DE VOYAGE%JUSTIFICATIF DE VOYAGE%'PostgreSQL:默认
LIKE是区分大小写的,若之前修改过配置,可显式指定大小写敏感的排序规则WHERE raw_text LIKE '%JUSTIFICATIF DE VOYAGE%JUSTIFICATIF DE VOYAGE%' COLLATE "C"Oracle:使用大小写敏感的排序规则(如
BINARY)WHERE raw_text LIKE '%JUSTIFICATIF DE VOYAGE%JUSTIFICATIF DE VOYAGE%' COLLATE BINARY
内容的提问来源于stack exchange,提问作者user21479867
相关产品推荐
相关产品推荐

