• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LOFLY
终其一生,编织快乐
博客园    首页    新随笔    联系   管理    订阅  订阅

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 进行演示。

image

要查找名称以 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 '\';

posted @ 2024-07-22 11:15  编织快乐  阅读(115)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3