SQLite-LIKE
SQLite Like
SELECT
column_list
FROM
table_name
WHERE
column_1 LIKE pattern;
请注意,您还可以在其他语句(例如 DELETE 和 UPDATE)的 WHERE 子句中使用 LIKE 运算符。
SQLite 提供了两个用于构造模式的通配符。它们是百分号 % 和下划线 _ :
1. 百分号 % 通配符可匹配零个或多个字符的任意序列。
2. 下划线 _ 通配符匹配任意单个字符。
SQLite LIKE 案例
我们将使用示例数据库中的表 tracks 进行演示。

要查找名称以 Wild 字符串开头的曲目,请在模式末尾使用百分号 % 通配符。
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'
要查找名称以 Wild word 结尾的曲目,请在模式开头使用 % 通配符。
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'
要查找名称包含 Wild 字符串的曲目,请在模式的开头和结尾使用 % 通配符:
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild%';
SQLite Like 使用 ESCAPE 语句
如果要匹配的模式包含 % 或 _,则必须在可选 ESCAPE 子句中使用转义字符,如下所示:
column_1 LIKE pattern ESCAPE expression;
当您指定 ESCAPE 子句时,LIKE 运算符将把 ESCAPE 关键字后面的表达式评估为由单个字符或转义字符组成的字符串。
假设您想要匹配表的某一列中的字符串 10%。但是,SQLite 将百分号 % 解释为通配符。因此,您需要使用转义字符来转义此百分号 %:
column_1 LIKE '%10\%%' ESCAPE '\';
在此表达式中,LIKE 运算符将第一个 % 和最后一个 % 百分号解释为通配符,将第二个百分号解释为文字百分号。
请注意,您可以使用其他字符作为转义字符,例如 /、@、$。
创建一个表:
create TABLE t(
c TEXT
);
接下来,向表 t 中插入一些行:
INSERT INTO t(c)
VALUES('10% increase'),
('10 times decrease'),
('100% vs. last year'),
('20% increase next year');
尝试找到 c 列中的值包含 10% 文字字符串的行:
SELECT c
FROM t
WHERE c LIKE '%10%%';
但是,它返回 c 列中的值包含 10 的行:
c
------------------
10% increase
10 times decrease
100% vs. last year
为了获得正确的结果,可以使用 ESCAPE 子句,如以下查询所示:
SELECT c
FROM t
WHERE c LIKE '%10\%%' ESCAPE '\';
浙公网安备 33010602011771号