'[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语句就行了,详细代码如图。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)