进行like 查询的时候怎么忽略大小写 让like都能匹配到
例如 select * from xxxx where like ’%aaa%‘ 也能匹配到AAA aaA
目前版本5.4
进行like 查询的时候怎么忽略大小写 让like都能匹配到
例如 select * from xxxx where like ’%aaa%‘ 也能匹配到AAA aaA
目前版本5.4
我记得以前说这是一个bug。你用最新版本的看看
SELECT VARIABLE_VALUE FROM mysql.tidb WHERE VARIABLE_NAME=‘new_collation_enabled’;
看下这个结果,然后看下
show create table table_name
如果是表名大小写不敏感,是这个配置项
不是表名 是对表中的列字段匹配 字符串类型
那就是楼上说的,要修改字符集实现
我擦 还要改配置 重启集群重新刷数据 代价太大了吧
那个是4.0的,刚注意到你是5.4的。5.4应该不需要重建集群这么麻烦
可以直接将 表的utf8mb4_0900_ai_ci 字符编码改为tidb支持的那4种就行了吗
CREATE TABLE `youtube_video` (
id
int(10) unsigned NOT NULL AUTO_INCREMENT,
mainKeywrodId
int(11) DEFAULT NULL COMMENT ‘主词id’,
searchId
int(11) DEFAULT NULL COMMENT ‘搜索词id’,
userId
int(11) DEFAULT NULL COMMENT ‘用户作者’,
videoId
varchar(50) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ‘视频id’,
surfacePlot
varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ‘视频封面’,
url
varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ‘播放链接’,
title
varchar(1000) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ‘视频title’,
intro
text COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ‘视频介绍’,
language
varchar(50) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ‘语言字段’,
streamingType
int(11) DEFAULT NULL COMMENT ‘视频流类型,1普通短视频,2直播视频,3short视频’,
shortDomainDict
text COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ‘短链 (爬简介时一同更新)’,
domainDict
varchar(1000) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ‘外链’,
crawl
int(11) DEFAULT ‘0’ COMMENT ‘爬取状态 -1 不需要处理 0 未爬取 1 入简介队列 2简介已完成 3简介任务出错 4没有可疑短链 5短链入队列 6短链已完成 7短链出错’,
crawlTime
datetime DEFAULT NULL COMMENT ‘爬取时间’,
lengthText
varchar(50) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ‘视频长度’,
viewCountText
int(11) DEFAULT NULL COMMENT ‘观看次数’,
publishedTime
datetime DEFAULT NULL COMMENT ‘发布时间’,
remark
varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ‘备注’,
createTime
timestamp DEFAULT CURRENT_TIMESTAMP COMMENT ‘入库时间’,
isDelete
int(11) DEFAULT ‘0’ COMMENT ‘删除标志: 1删除,0未删除’,
PRIMARY KEY (id
) /*T![clustered_index] CLUSTERED */,
UNIQUE KEY videoId
(videoId
),
KEY userId
(userId
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci AUTO_INCREMENT=346055349;
不行,这个是在开关开启的情况下才生效。
这里要为true才可以
这里其实可以绕开大小写敏感
如果筛选字段上没有索引的话可以直接用函数先将字段格式化成小写,然后再like。
这样一般效率不高,不过既然都是like了,应该影响不大。
5.4版本 new_collations_enabled_on_first_bootstrap
默认是false,如果不开启就没办法用utf8mb4_general_ci
排序规则。
推荐做法:
1、dumpling备份数据
2、重建集群开启 new_collations_enabled_on_first_bootstrap
参数,或者升级到6.0版本(6.0中默认开启)
3、新集群中建表指定collation为utf8mb4_general_ci
4、导入备份数据
没有别的好办法了。
代价太大了,不如直接用lower函数将字段先转换成小写,然后再like