SQL从表中选择子串存在于字符串的行
假设我在一个sqlite3数据库里有一个叫做 table1
的表,这个表里有两列,分别叫做'id'和'string'。表里有三条记录,内容如下:
id string
'a' 'google'
'b' 'apple'
'c' 'application'
现在我想找出所有包含'app'这个词的行,我该怎么做呢?我想要的查询语句大概是这样的:
SELECT * FROM table1 WHERE 'app' in string
理论上,这个查询会返回最后两条记录……
3 个回答
0
这很简单。你需要在SQL中使用LIKE '%'操作符。这个操作符是用来匹配字符串的。
你的查询应该像这样:
SELECT * FROM table1
WHERE string LIKE '%app%'
因为你没有说明'app'是应该在字符串的开头还是结尾,所以我把字符串'app'两边都加上了'%',这样就可以在字符串的任何位置找到'app'了。
0
试试这个:
SELECT * FROM table1 WHERE string LIKE '%app%'
0
你可以使用 LIKE
来进行模糊匹配。
SELECT * FROM table1
WHERE string LIKE '%app%'
更新:
当你在字符串前面使用通配符(比如 LIKE '%app%'
)时,性能大致是一样的。
如果你想找以 app
开头的字符串,使用 LIKE 'app%'
会更好。原因如下:
在第一个通配符之前的部分起到了限制作用,也就是说,它们会限制扫描的索引范围。而后面的字符并不会缩小扫描的索引范围——不匹配的条目只是不会出现在结果中。