SQL LIKE运算符
SQL LIKE 是一个逻辑运算符,用于根据指定的模式检索表中列的数据。
它与UPDATE、DELETE和SELECT语句的WHERE子句一起使用,根据给定的模式过滤行。这些模式使用 通配符 指定。
假设我们需要提交所有以‘K’开头的学生的名单。我们可以使用LIKE运算符来实现如下:
在这里,“%”是一个通配符,表示零、一个或多个字符。而表达式“K%”指定显示所有名字以“k”开头的学生的列表。
LIKE运算符可以用于字符串、数字或日期值。然而,建议使用字符串值。
语法
SQL LIKE运算符的基本语法如下:
通配符是什么
通配符是在SQL查询中用于匹配数据模式的特殊字符。以下是与LIKE运算符一起使用的四个通配符:
序号 | 通配符和定义 |
---|---|
1 | % 百分号代表零个、一个或多个字符。 |
2 | _ 下划线代表一个数字或字符。 |
3 | [] 这匹配[]中给定范围内的任何一个字符。 |
4 | [^] 这匹配除了[^]中给定范围之外的任何一个字符。 |
注意 − 在LIKE运算符中,上述通配符可以单独使用,也可以与彼此组合使用。两个主要使用的通配符是 ‘%’ 和 ‘_’ 。
下面的表格列出了一些示例,显示了具有’%’,’_’,[]和[^]模式的WHERE子句使用不同的LIKE运算符-
序号 | 语句和描述 |
---|---|
1 | WHERE SALARY LIKE '200%' 找到以200开头的任何值。 |
2 | WHERE SALARY LIKE '%200%' 找到任何位置有200的任何值。 |
3 | WHERE SALARY LIKE '_00%' 找到第二和第三个位置有00的任何值。 |
4 | WHERE SALARY LIKE '2_%_%' 找到以2开头且长度至少为3个字符的任何值。 |
5 | WHERE SALARY LIKE '%2' 找到以2结尾的任何值。 |
6 | WHERE SALARY LIKE '_2%3' 找到第二个位置有2且以3结尾的任何值。 |
7 | WHERE SALARY LIKE '2___3' 找到以2开头且以3结尾的五位数的任何值。 |
8 | WHERE NAME LIKE 'A[a, l, j, y, a, k]' 找到以A开头且包含指定字母的任何名字。例如,Ajay |
9 | WHERE NAME LIKE 'A[a, l, j, y, a, k]' 找到以A开头且不包含指定字母的任何名字。例如,Abdu. |
使用%
通配符
百分号代表零个或多个字符。“%”通配符匹配任意长度的字符串,包括零长度。
示例
为了更好地理解,让我们考虑一个包含客户个人详细信息的“CUSTOMERS”表,包括他们的姓名、年龄、地址和薪水等,如下所示:
现在,使用以下的INSERT语句将值插入到这个表中 −
表格创建如下:
现在,让我们尝试从CUSTOMERS表中显示所有薪资以200开头的记录。
输出
这将产生以下结果:
示例
以下是查询,显示之前创建的CUSTOMERS表中所有带有“al”的NAME的记录。在LIKE条件中,我们使用了多个“%”通配符。
输出
以下的结果被产生 –
使用“_”通配符
下划线通配符代表一个数字或字符。一个’_’表示寻找与’%’通配符类似的一个字符。
示例
以下是一个查询,它会显示之前创建的CUSTOMERS表中所有名称以K开头且长度至少为4个字符的记录:
输出结果
下面是获得的结果−
示例
以下是显示CUSTOMERS表中所有记录的查询,其中名称在第三个位置上有’m’。
输出
在执行上述查询后,我们得到以下结果-
使用“[ ]”通配符
方括号中的字符列表匹配给定范围内的任何单个字符[b-k]或集合[xyz]。
示例
在下面给定的查询中,我们试图显示CUSTOMERS表中所有记录,其中名字以 K 开头,并且具有指定的字符集合 [h,i,o,m,l,a,n] –
输出
我们得到以下结果−
示例
在这里,我们正在显示名为CUSTOMERS表中的所有记录,其中NAME的第一个和最后一个字符位于[b-i]的范围之内-
输出
下面给出的结果显示为−
使用“[^]”通配符字符
[ ^字符列表或范围 ] 匹配不在给定范围或字符列表中的任何单个字符。
示例
在下面给出的查询中,NAME列的第一个字符不在 [ b-k ] 范围内
输出
以下结果被获取 –
使用LIKE操作符和OR操作符
我们还可以通过使用 AND 运算符或 OR 运算符来使用LIKE操作符选择多个字符串模式的行。
语法
以下是使用LIKE操作符和OR操作符的基本语法:
示例
在这里,SQL命令选择那些名字以 C 开头且以 i 结尾的客户,或者名字以 k 结尾的客户 –
输出
这将产生以下结果 –
使用NOT运算符与LIKE条件
我们使用NOT LIKE运算符来提取不包含搜索模式中给定字符串的行。
语法
以下是在SQL中使用NOT LIKE运算符的基本语法-
示例
在下面的查询中,我们试图获取所有名称不以 K 开头的客户。
输出
这将产生以下结果:
在LIKE操作符中使用转义字符
SQL中的转义字符用于在LIKE操作符的表达式中排除特定的通配符字符。通过这样做,我们可以将这些字符以通常的意义使用。
使用转义字符,我们还可以避免使用在SQL语法中保留用于表示特定命令的字符,例如单引号“’”、“%”和“_”。
例如,如果您需要在LIKE条件中以字面值搜索“%”,则可以使用转义字符完成。
注意−转义字符仅定义为单个字符。建议选择在我们的数据中不存在的字符。
语法
使用转义字符的LIKE操作符的语法如下所示−
在下面的示例中,
- pattern 是你想要匹配的模式。
-
ESCAPE 是指示转义字符的关键字。
-
escape_character 是你想要用作转义字符的字符。
示例
让我们使用以下查询语句创建一个新的表EMPLOYEE –
现在,我们可以使用INSERT语句将值插入到这个空表中,如下所示:
员工 表 包括组织中员工的薪水和薪水中的奖金百分比,如下所示−
现在,让我们尝试显示所有在EMPLOYEE表中的记录,其中BONUS_PERCENT字段包含 % 字面量。
输出
这将产生以下结果 –
在这里,我们试图返回以‘2’开头,并且包含‘%’字面值的BONUS_PERCENT。
输出
以下结果已获得 –
SQL中使用LIKE运算符的用途
LIKE运算符的几个用途如下:
-
它帮助我们提取与所需模式匹配的数据。
-
它帮助我们对数据执行基于复杂正则表达式的查询。
-
它简化了复杂的查询。