踩坑系列—mysql查询大小写及末尾空格问题

问题:
根据某个varchar类型字段查询,输入大小写区分的条件,查询结果一样,非预期;输入带空格结尾的条件,代码去除了空格,查询结果还是包含了带空格的数据。

测试:

CREATE TABLE IF NOT EXISTS `docs` (
  `id` int(6) unsigned NOT NULL,
  `name` varchar(200) NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

INSERT INTO `docs` (`id`, `name`) VALUES
  (1, 'lycXH'),
  (2, 'lycxh'),
  (3, ' lycxh'),
  (4, 'lycxh ');

创建测试表及测试数据,1和2大小写区分,2和3前空格区分,2和4后空格区分

测试场景如下:
场景一大写不带空格
场景一根据查询结果可见:
id=2:忽略了大小写
id=4:忽略了大小写及末尾空格

场景二小写不带空格

场景二根据查询结果可见:
id=1:忽略了大小写
id=4:忽略了末尾空格

场景三小写带后空格
场景三查询条件带末尾空格和场景二不带空格结果一样,同场景一忽略大小写的结果也一样

场景四小写带前空格
场景四查询条件带前空格是完全匹配带前空格的值

对于前后空格的最好是在存值的时候就过滤掉,而不区分大小写的问题可以sql加上BINARY如下:
场景五加上BINARY严格区分大小写
场景五加上BINARY严格区分大小写

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值