TiDB与MySQL模糊查询大小写问题解析

网友投稿 231 2024-02-28



  我爱人做测试工作,遇到问题问我说她们测试时候要求不区分大小写,比如M1和m1都显示。我第一反应需求不合理啊。数据库一般来说都是等值比较的。否则就要去做一些工作了。我就展开了一个实验场景,给她看看。实验场景是***19C,效果如下:

TiDB与MySQL模糊查询大小写问题解析

精确查询a1的时候返回a1,模糊查询的时候没有A1。这是我预期的。

但是她说她们系统不区分的。我想到她们系统是MySQL的,理论上MySQL也应该这样才是。

于是来一个MySQL的,MySQL8.0.29

这个结果说实在的有点让我吃惊。显然MySQL是没有区分。

那么我自然想到了兼容MySQL的TiDB是怎么做的呢?

在Tidb下会不会也继承呢?

在tidb5.3的场景下,也是查询区分大小写的。

其实说模糊查询,其实不准确,应该说查询即使精确查询都是区分大小写的。TiDB并没有继承MySQL的优化器和执行器,而是采用类似***的方式来做判断和执行。

那么是MySQL错了吗?其实我倒是觉得这个可能要分场景,真的没有对错。***、TiDB如实反馈没有错。如果这个时候有个需求说要不区分怎么办?通常程序会改 小写 or 大写。即应用程序分别匹配一下。而MySQL就不用改了。

但是如果需求说就是要如实反馈,区分呢?显然MySQL默认下是不行了,有没有办法改呢?

有的。这样就可以了。所以说没有对错吧。大家在使用两者的时候注意一下这个区别。

最终我其实想表达的是:我只是说默认的rpm安装没有指定。当然在字符集设置上也可以指定,带bin的可以。否则要显示指定。

但是这点上TiDB都是在默认设置上采用了区分。我主要目的是为了是让一些从MySQL迁移过来的朋友有个注意。否则可能觉得遇到了问题或者bug,而其实不是这样的。因为毕竟我就遇到了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:TiDB与MySQL性能大比拼
下一篇:TiDB与TiSpark部署实战:安装、扩缩容及升级操作
相关文章