类似MySQL:基于指定模式查询数据
类MySQL操作符简介
LIKE运算符是一个逻辑运算符,用于测试字符串是否包含指定的模式。
下面是LIKE运算符的语法:
expression LIKE pattern ESCAPE escape_character
在这种语法中,如果表达式与模式匹配,LIKE运算符将返回1。否则,它返回0。
MySQL为构建模式提供了两个通配符:百分比%和下划线33;。
例如,s%匹配任何以字符s开头的字符串,例如sun和six。se_u匹配任何以se开头的字符串,后跟任何字符,如see和sea。
当模式包含通配符并且希望将其视为常规字符时,可以使用ESCAPE子句。
通常,在SELECT、DELETE和UPDATE语句的WHERE子句中使用LIKE运算符。
类似MySQL的操作符示例
让我们用一些使用LIKE操作符的例子来练习。我们将使用样本数据库中的以下employees表进行演示:
A) 在百分比(%)通配符示例中使用类似MySQL的运算符
本例使用LIKE运算符查找名字以字母a开头的员工:
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
firstName LIKE 'a%';
本例使用LIKE运算符查找姓氏以文本字符串结尾的员工,例如Patterson、Thompson:
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
lastName LIKE '%on';
要检查字符串是否包含子字符串,可以在子字符串的开头和结尾使用百分比(%)通配符。
例如,以下查询使用LIKE运算符查找姓氏中包含子字符串的所有员工:
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
lastname LIKE '%on%';
B) 使用类似MySQL的运算符和下划线(u)通配符示例
要查找名字以字母T开头,以字母m结尾,并且包含Tom、Tim等之间任何单个字符的员工,可以使用下划线()通配符来构建模式,如下所示:
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
firstname LIKE 'T_m';
C) 使用MySQL与运算符示例不同
MySQL允许您将NOT运算符与LIKE运算符组合,以查找与特定模式不匹配的字符串。
假设要搜索姓氏不以字母B开头的员工,可以使用NOT LIKE运算符,如下所示:
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
lastName NOT LIKE 'B%';
请注意,该模式不区分大小写。因此,b%和b%模式返回相同的结果。
带ESCAPE子句的类MySQL运算符
有时,模式可能包含通配符,例如10%,_20等。
在这种情况下,可以使用ESCAPE子句指定转义字符,以便LIKE运算符将通配符解释为文字字符。
如果未明确指定转义字符,则反斜杠字符(\)是默认的转义字符。
例如,如果要查找产品代码包含字符串\u 20的产品,可以使用模式%\u 20%和默认转义字符:
SELECT
productCode,
productName
FROM
products
WHERE
productCode LIKE '%\_20%';
或者,您可以使用escape子句指定不同的转义字符,例如$:
SELECT
productCode,
productName
FROM
products
WHERE
productCode LIKE '%$_20%' ESCAPE '$';
模式%$_20%匹配包含_20字符串的任何字符串。