模糊查询区分大小写吗?

来源:这里教程网 时间:2026-03-01 16:37:07 作者:

     我爱人做测试工作,遇到问题问我说她们测试时候要求 区分大小写,比如M1和m1都显示。我第一反应需求不合理啊。数据库一般来说都是等值比较的。否则就要去做一些工作了。我就展开了一个实验场景,给她看看。实验场景是Oracle19C,效果如下:精确查询a1的时候返回a1,模糊查询的时候没有A1。这是我预期的。 但是她说她们系统不区分的。我想到她们系统是MySQL的,理论上MySQL也应该这样才是。 于是来一个MySQL的,MySQL8.0.29 这个结果说实在的有点让我吃惊。显然MySQL是没有区分。这时候我通常会引入PostgreSQL来进行对比。 PG下是什么情况呢? 这是PG14版本的结果,PG和Oracle的执行效果是一样的。 既然这样看来,可以说其实模糊区分大小写不是个例。 更加准确的说,这个和是不是模糊查询无关。而是说我们查询是不是区分大小写。即使是精确查询。 随即我又想到了兼容MySQL的Tidb。 在Tidb下会不会也继承呢?在tidb5.3的场景下,也是查询区分大小写的。可见TiDB在这点上是和Oracle、PG的执行器是一样的。 那么是MySQL错了吗?其实我倒是觉得这个可能要分场景,真的没有对错。PG、Oracle、TiDB如实反馈没有错。如果这个时候有个需求说要不区分怎么办?通常程序会改 小写 or 大写。即应用程序分别匹配一下。而MySQL就不用改了。 但是如果需求说就是要如实反馈,区分呢?显然MySQL默认下是不行了,有没有办法改呢? 有的。这样就可以了。所以说没有对错吧。 不过一开始的确翻车了,因为Oracle思维习惯,觉得是区分的,但是MySQL是不区分的。这种主要看是看数据库。

相关推荐