SQLite Like 子句

我们已经学习了很多的条件表达式,功能也十分强大,但我们想列出某些字段以某些文字开头或者包含某些文字的记录要怎么做呢?

SQLite 的 LIKE 运算符可以匹配通配符指定模式的文本值。

如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1。

通配符

这里有两个通配符与 LIKE 运算符一起使用

  • 百分号 (%): 百分号(%)代表零个、一个或多个数字或字符

  • 下划线 (_): 下划线 (_) 代表一个单一的数字或字符

百分号和下划线可以被组合使用

'%' 和 '_' 的基本语法如下

SELECT column_list FROM table_name WHERE column LIKE 'XXXX%'
SELECT column_list FROM table_name WHERE column LIKE '%XXXX%'
SELECT column_list FROM table_name WHERE column LIKE 'XXXX_'
SELECT column_list FROM table_name WHERE column LIKE '_XXXX'
SELECT column_list FROM table_name WHERE column LIKE '_XXXX_'

可以使用 AND 或 OR 运算符来结合 N 个数量的条件,在这里,XXXX 可以是任何数字或字符串值。

带有 '%' 和 '_' 运算符的 LIKE 子句不同的地方

语句 描述
WHERE salary LIKE '200%' 查找以 200 开头的任意值
WHERE salary LIKE '%200%' 查找任意位置包含 200 的任意值
WHERE salary LIKE '_00%' 查找第二位和第三位为 00 的任意值
WHERE salary LIKE '2_%_%' 查找以 2 开头,且长度至少为 3 个字符的任意值
WHERE salary LIKE '%2' 查找以 2 结尾的任意值
WHERE salary LIKE '_2%3' 查找第二位为 2,且以 3 结尾的任意值
WHERE salary LIKE '2___3' 查找长度为 5 位数,且以 2 开头以 3 结尾的值

范例

假设我们的 company 表有以下记录:

sqlite> SELECT * FROM company;
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

1. 列出 age 以 2 开头的所有记录

sqlite> SELECT * FROM company WHERE age  LIKE '2%';
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

2. 列出 address 文本里包含一个连字符(-)的所有记录

sqlite> SELECT * FROM company WHERE address  LIKE '%-%';
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
6           Kim         22          South-Hall  45000.0

SQLite 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.