SQL LIKE


在本教程中,我们将展示如何使用SQL LIKE操作符根据模式进行数据查询。

SQL LIKE操作符介绍

LIKE操作符允许您根据指定的模式搜索文本字符串。
您可以在任何有效的SQL语句(如SELECT、UPDATE或DELETE)的WHERE子句中使用LIKE操作符。

SQL提供了两个通配符用于构造模式。这两个通配符是百分号(%)和下划线(_)。

  • 百分号(%)将匹配任何字符(包括空格)的序列。
  • 下划线(_)将匹配任何单个字符。

LIKE操作符与SELECT语句一起使用时的语法如下:

1
2
3
4
5
6
SELECT
column1, column2
FROM
table
WHERE
column LIKE pattern;

WHERE子句中的列的数据类型必须是字母数字的,例如char、varchar等

SQL LIKE 操作符示例

让我们看一些使用LIKE操作符的例子。

使用百分号(%)

  1. 假设我们要查找姓名以字母D开头的员工,可以使用下面查询语句:
1
2
3
4
5
6
SELECT
lastname, firstname
FROM
employees
WHERE
lastname LIKE 'D%'

匹配表达式"D%"表示将匹配任何以字符“D”开头、后跟任何字符的字符串。

  1. 要查找名字以“n"结尾的员工:
1
2
3
4
5
6
SELECT
lastname, firstname
FROM
employees
WHERE
lastname LIKE '%n'

表达式"%n"将匹配任何以字符'n'结尾的字符串。

  1. 还可以将通配符' % '放在字符串的开头和结尾,以匹配包含通配符中的字符串的任何字符串。

例如,要查找姓名中包含字符串“ll”的员工,可以使用下面的查询语句:

1
2
3
4
5
6
SELECT
lastname, firstname
FROM
employees
WHERE
lastname LIKE '%ll%'

这两个通配符的组合使用

您可以组合两个通配符' % '和' _ '来构造一个模式表达式。

例如,查找姓名以任意单个字符开头,后跟字符a,并以任意字符结尾的员工:

1
2
3
4
5
6
SELECT
lastname, firstname
FROM
employees
WHERE
lastname LIKE '_a%'

SQL LIKE 和 NOT 操作符一起使用

可以将LIKE操作符与NOT操作符组合使用,以查找与指定模式不匹配的任何字符串。

例如查找名字不以D开头的员工:

1
2
3
4
5
6
SELECT
lastname, firstname
FROM
employees
WHERE
lastname NOT LIKE 'D%'

通配符字符转义

如果要匹配的模式包含通配符,例如5%或者_10。
要使用此模式,则需要转义模式中的通配符。

不同的数据库使用不同的方式来转义通配符(%,_)。

最常见的方法是使用反斜杠(\)字符或ESCAPE子句。

下面是如何使用反斜杠()字符转义通配符:

1
column LIKE '%\_10%'

ESCAPE子句允许您自己指定转义字符,而不是反斜杠字符。
例如,下面的例子使用@作为转义字符:

1
column LIKE '%20@%' ESCAPE '@';

模式%20@%将匹配任何以20%结尾的字符串。


原文链接:https://codingdict.com/