MYSQL 中的 LIKE 这么用不对?

MYSQL 中的 LIKE 这么用不对?,第1张

LIKE

'[BL]%'

这种写法,

好像只有

SQL

Server

支持,

其他数据库不支持的。

REGEXP

是正则表达式匹配。

WHERE

City

REGEXP

'^[BL]'

就可以了。

就是满足

字母

B

或者

L

开头的,

检索出来。

因为

%

是用于

LIKE

的。

不是用于

正则表达式的。

REGEXP

like

在匹配上的区别

其中like要求整个数据都要匹配,而REGEXP只需要部分匹配即可。

也就是说,用Like,必须这个字段的所有内容满足条件,而REGEXP只需要有任何一个片段满足即可。

出了什么错,是不是把不含有“稜”字的也返回了?这是个不好避免的问题,一般有两种原因会造成这样的后果。

一是使用GBK、GB2312编码的时侯,一个汉字两个字节,前一个汉字的后字节和后一个汉字的前字节结合会得到新的汉字,所以会多返回结果,特别是在查一个汉字的时侯。

二是没有使用binnary修饰,系统的like是大小写模糊匹配的,查“稜”字的时侯,其另外的小写或者大写形式也会返回,系统计算大小写的时侯是按照英文编码方式转换的,所以查出结果我们看不出和“稜”的联系。

MYSQL多表条件多LIKE 并且是OR 链接,出来好多重复数据是设置错误造成的,解决方法为:

1、先看下我们的表数据,有一些数据是重复的。

2、要查找重复数据,我们可以使用mysql里的having语句,如图。

3、执行这个语句后,我们可以看到现在的结果里显示的就是表中重复数据的字段。

4、要删除这些重复的数据,我们找出这些数据的ID,在select语句里,添加id字段,使用max函数,可以得到重复数据最后面的id。

5、执行结果如图,得到重复数据的id为8和9。

6、这样我们就可以使用delete语句来删除这二个id的数据了。

7、然后在外边添加一个delete语句就行了,详细代码如图。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8645146.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存