SQLite中有没有一种方法可以检查数组是否包含一个值?

7 javascript sqlite sqlite-json1

假设我们有一个 SQLite 表,其中 id=number 且 Tags=text:

| id   | tags                |  
| ---- | ------------------- |   
| 1    | ["love","sadness"]  |    
| 2    | ["love"]            |   
| 3    | ["happiness","joy"] |
Run Code Online (Sandbox Code Playgroud)

有没有办法只返回单元格tags包含“love”的行,例如MySQL中的这个命令:SELECT * from my_table WHERE JSON_CONTAINS(tags, '"love"')在SQLite中。

sql.js我将其与Node.js库一起使用

Sha*_*awn 15

如果您的 sqlite 版本已编译JSON1扩展:

SELECT *
FROM my_table
WHERE EXISTS (SELECT 1 FROM json_each(tags) WHERE value = 'love')
ORDER BY id;
Run Code Online (Sandbox Code Playgroud)

将返回

id  tags               
--  -------------------
1   ["love","sadness"] 
2   ["love"]           
Run Code Online (Sandbox Code Playgroud)


小智 0

我相信这应该有效:

SELECT * from my_table WHERE tags LIKE '%"love"%';
Run Code Online (Sandbox Code Playgroud)

关键字LIKE允许您查询列中的部分信息,它在WHERE子句中使用,就像运算符=, IN,BETWEEN

笔记:

  • 百分号 % 通配符匹配零个或多个字符的任何序列。
  • 下划线 _ 通配符匹配任何单个字符。