您的位置:首页 > 数据库 > MySQL

MySQL数据库——用通配符和正则表达式过滤数据(一)

2017-12-08 23:20 363 查看
前面我们介绍过关于如何过滤数据,但是那些都是对已经确定的值进行过滤的。在实际生活中,我们很可能需要类似这样的搜索,列出文本中包含关键字“Freeman”的语句。

显然,我们用之前的简单操作肯定是不行地,必须使用通配符!

通配符:用来匹配值一部分的特殊字符

搜索模式: 由字面值、通配符或两者组合成的搜索条件。

通配符本身实际是SQL的WHERE子句中有特殊汉子的字符,在搜索子句中使用通配符,必须使用LIKE操作符。LIKE指示MySQL,后跟的搜索模式(我喜欢叫搜索样式),利用通配符而不是直接相等匹配来比较。

谓词:操作符何时不是操作符?答案是在它做谓词时。从技术上说,LIKE是谓词而不是操作符。虽然最终结果相同,但是应该对这个术语了解,SQL文档会提到。

part 1 百分号通配符使用

SELECT users.user_name, users.user_age FROM users WHERE users.user_name LIKE '%一东'


这个例子使用了搜索模式 ‘%一东’ 检索任何后面跟着一东的词。 注意:虽然SQL语句不区分大小写,但是搜索模式是区分的 %huang 和 222HUANG 将不会匹配!

通配符可在搜索模式中任意位置使用,并且可以使用多个通配符。

SELECT users.user_name, users.user_age FROM users WHERE users.user_name LIKE '%一%'


搜索模式 “%一%” 将匹配任何包含一 的文本。

要注意到,除了一个或多个字符外,%还能匹配0个字符。%代表搜索模式中给定位置的0个、1个或多个字符 。

另外!还有要注意尾空格:尾空格可能会干扰通配符的匹配。例如,在保存词anvil时,如果它后面还有一个或多个空格,则子句WHERE prod_name LIKE ‘%anvil’ 将不会匹配,因为在后面有多余的字符。

解决这个问题的好办法是,将搜索模式写成这样’%anvil%’,还有更好的方法,是使用函数,我们以后会说到。

part 2 下划线(_)通配符

另一个有用的通配符是下划线(_)。下划线的用途和 % 一样 , 但是下划线只匹配单个字符而不是多个字符 。 如下:

SELECT users.user_name, users.user_age FROM users WHERE users.user_name LIKE '_一_'


第一个下划线 会 匹配 黄 第二个下划线 会匹配 东 。

和%能匹配0或多个字符不一样,下划线智能匹配一个,不能多也不能少。

part 3 通配符使用技巧

通配符搜索的处理一般要比前面讨论的其他搜索所话时间更长 。所以:

1.不要过度使用通配符。如果通过其他形式能达到目的,应该优先其他形式。

2.确实需要使用通配符的时候,除非真的有必要,否则不要吧通配符放到搜索模式的开始处。因为把通配符放到搜索模式的开始处,搜索起来是最慢的!

3.仔细注意通配符的位置,否则可能有意想不到的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 mysql
相关文章推荐