如何在SQLite中搜索子字符串?

问题描述 投票:0回答:3

在 SQLite 中搜索子字符串最有效的方法是什么?

我正在查看 LIKE 运算符。

我的想法正确吗?这对你来说效果好吗?

http://www.sqlite.org/lang_expr.html

谢谢你。

sql database sqlite database-design
3个回答
63
投票

是的,使用

Like
。查询例如:

Select id from sometable where name like '%abc%'

将返回名称列中任意位置包含“abc”的任何行。

如果您要查找的模式恰好包含 % 或 _ 字符,您可以使用 ESCAPE 关键字定义转义字符以在表达式中包含该特殊字符。要查找字符串“somename%”(包括 %),它看起来像:

select id from mytable where name like '%somename\%%' escape '\' 

请参阅:SQLite 语言表达式


15
投票

可以使用

LIKE
,但是如果你正在搜索的模式以'%'开头,那么它会变得
真的
慢——也就是说,如果你正在寻找的子字符串不一定位于领域。

如果您需要进行此类搜索,请考虑使用 FTS3,这使得全文搜索更加高效。


10
投票

问题被提出和回答已经过去了很多年,在 2012 年 SQLite 版本 3.7.15 引入了一个函数 instr( string, substring)

 - 返回字符串中子字符串的位置,如果没有找到则返回 0。 (
https://www.techonthenet.com/sqlite/functions/instr.php

sqlite> SELECT instr('TechOnTheNet.com', 'T');

结果:1

我还没有与

LIKE

 进行基准测试,但恕我直言,可能会更快。

© www.soinside.com 2019 - 2024. All rights reserved.