本文继续对 MySQL
中的通配符过滤、正则表达式、运算符进行分类总结。
1. 通配符
LIKE
指示 MySQL
,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较,其中分为 %
和 _
通配符。
%
表示任何字符出现 0 次或者任意次数
如:
SELECT prod_id, prod_name
FROM products
WHERE prod_id LIKE 'jet%'
_
只匹配单个个任意字符
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE '_ ton anvil'
以下是一些模式和匹配的字符串:
LIKE 'en%'
:匹配以“en”开始的字符串,例如“english languages”、“end”;LIKE '%en%'
:匹配包含“en”的字符串,例如“length”、“when are you”;LIKE '%en'
:匹配以“en”结束的字符串,例如“ten”、“when”;LIKE 'Be_'
:匹配以“Be”开始,再加上一个任意字符的字符串。例如“Bed”、“Bet”;LIKE '_e%'
:匹配一个任意字符加上“e”开始的字符串,例如“her”、“year”。
2. 转义字符
转义字符可以将通配符 %
和 _
进行转义,将它们当作普通字符使用。默认的转义字符为反斜杠(\
)。
下面例子查询 25%
的数据
-- 查询包含字符串 25% 的数据
SELECT c1
FROM t_like
WHERE c1 LIKE '%25\%%';
-- WHERE c1 LIKE '%25#%%' ESCAPE '#'; -- 指定 # 作为转义字符
c1 |
----------|
进度:25% 已完成|
第一个 %
匹配多个任意字符;第二个 %
前面增加了转义字符(\
),表示匹配一个百分号;第三个 %
匹配多个任意字符。
查询结果中只有一条满足结果的数据,如果去掉转义字符(\
)将会返回两条记录。另外,也可以通过 ESCAPE
指定其他的转义字符。
3. 正则表达
- 正则表达模式主要有以下几种:
- 匹配字符类见下图
4. 运算符
主要有算术运算符、比较运算符、逻辑运算符、位运算符
- BETWEEN
SELECT emp_name, salary
FROM employee
WHERE salary BETWEEN 10000 AND 15000;
需要注意的是,BETWEEN
包含了两端的值(10000 和 15000)
- IN
IN
运算符可以用于查找列表中的值。只要匹配列表中的任何一个值,都会返回结果。
NOT
运算符可以结合其他的运算符一起使用,用于对查询条件的结果取反:
NOT BETWEEN
,位于范围之外。NOT IN
,不在列表之中。NOT LIKE
,不匹配某个模式。LIKE
运算符用于字符串的模糊查找。NOT EXISTS
,子查询中不存在结果。NOT IS NULL
,不为空。等价于IS NOT NULL
。
以下是 SQL
中各种条件运算符按照优先级从高到低进行的排列;必要时可以使用圆括号进行调整。
=、!=、<>、<、<=、>、>=
IS [NOT] NULL、[NOT] LIKE、[NOT] BETWEEN、[NOT] IN、[NOT] EXISTS
NOT
AND
OR