SQL从表中选择子串存在于字符串的行

1 投票
3 回答
2045 浏览
提问于 2025-04-18 01:33

假设我在一个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%' 会更好。原因如下:

在第一个通配符之前的部分起到了限制作用,也就是说,它们会限制扫描的索引范围。而后面的字符并不会缩小扫描的索引范围——不匹配的条目只是不会出现在结果中。

撰写回答