SQLite NOT LIKE 关键字是 LIKE 关键字的否定。 LIKE 关键字在 WHERE 子句中使用,用于在指定列中搜索指定模式。与 LIKE 或 NOT LIKE 关键字结合使用的通配符如下:
SQLite 中的通配符
符号 | 描述 | 示例 |
---|---|---|
% | 表示零、一或多个 | 'J%'代表以"J"开头的值,例如 - John、Jo 和 Jack 等。 |
_ | 代表一个字符。 | '_o%'代表第二个位置有"o"的值,例如 - John、Jo 和 Journey 等。 |
ESCAPE | 允许测试通配符的文字实例,例如 % 或 _ | 'J%!%' ESCAPE '!' 表示以 J 开头并以 % 结尾的值,例如 - John%、Jo% 和 Journey% 等。 |
语法
在 SQLite 中使用 LIKE 和 NOT LIKE 关键字的语法如下:
/* 使用 LIKE 关键字 */
SELECT column1, column2, ...
FROM table_name
WHERE column LIKE pattern;
/* 使用 NOT LIKE 关键字 */
SELECT column1, column2, ...
FROM table_name
WHERE column NOT LIKE pattern;
下表描述了与 LIKE 关键字一起使用的模式并使用(%) 和 (_)。
模式 | 描述 |
---|---|
'J%' | 以"J"开头的值。 |
'%n' | 以"n"结尾的值。 |
'%oh%' | 任意位置有"oh"的值。 |
'_o%' | 第二个位置有"o"的值。 |
'J_% ' | 以"J"开头且至少有 2 个字符的值。 |
'J__%' | 一个值以"J"开头且至少包含 3 个字符。 |
'J%n' | 以"J"开头并以以下结尾的值"n"。 |
示例:
考虑一个包含名为 Employee 的表的数据库,其内容如下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
使用%通配符:选择Employee表中的所有记录Name 以"Jo"开头,查询如下。
SELECT * FROM Employee
WHERE Name LIKE 'Jo%';
这将产生如下所示的结果:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
3 | Jo | Paris | 27 | 2800 |
将 % 通配符与 NOT LIKE 关键字一起使用:NOT LIKE 关键字用作 LIKE 关键字的否定。例如,要选择 Employee 表中 Name 不以"Jo"开头的所有记录,可以使用以下查询:
SELECT * FROM Employee
WHERE Name NOT LIKE 'Jo%';
这将产生如下所示的结果:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | New York | 24 | 2750 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
使用_通配符:选择Employee 表的所有记录,Name 包含"o"作为第二个字符,查询如下。
SELECT * FROM Employee
WHERE Name LIKE '_o%';
上述代码的结果将为:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
3 | Jo | Paris | 27 | 2800 |
使用 _ 通配符和 NOT LIKE 关键字:选择 Employee 表 的所有记录,Name 不包含"o"作为第二个字符,查询如下:.
SELECT * FROM Employee
WHERE Name NOT LIKE '_o%';
上述代码的结果将为:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | New York | 24 | 2750 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |