微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在SQLite中使用查询字符串列表执行LIKE查询

如何解决如何在SQLite中使用查询字符串列表执行LIKE查询

我有一个带有以下列的sqlite表

class SomeClass {

    @Serializedname(value = "on_sale?")
    val onSale: Boolean? = false
}
SELECT * FROM table_one

现在,如果我查询以下任一信息,则返回正确的信息:

+------+----------+--------------------------------------------------------+
|  ID  |   name   |                         dates                          |
+------+----------+--------------------------------------------------------+
| 1001 | SINGLE   | [{"dayOfMonth":5,"month":9}]                           | 
| 1002 | MULTIPLE | [{"dayOfMonth":2,"month":9},{"dayOfMonth":3,"month":9} |
+------+----------+--------------------------------------------------------+

但是我想将这两个语句合并在一行中。我已经尝试过this的答案,但没有为我工作。

此处的日期是可变长度,并不精确。 SELECT * FROM table_one WHERE dates LIKE '%dayOfMonth":3%' SELECT * FROM table_one WHERE dates LIKE '%dayOfMonth":5%' 操作也不起作用。 我要执行此操作IN,它将为我返回所有匹配项的列表。最简单的方法是什么?

解决方法

如果要使用LIKE进行此操作,则需要使用OR重复条件:

SELECT * 
FROM table_one 
WHERE dates LIKE '%dayOfMonth":3%' OR dates LIKE '%dayOfMonth":5%' 

正则表达式解决方案如下:

SELECT * FROM table_one WHERE dates REGEXP 'dayOfMonth":[35]' 

[35]是一个字符类,这意味着必须找到两个字符中的任何一个。

如果您有多个字符,则更通用的方法是使用|(在正则表达式中基本上代表“或”):

SELECT * FROM table_one WHERE dates REGEXP 'dayOfMonth":(3)|(5)' 

您可以在括号内放入任意数量的字符

,

但是我想将这两条语句合并在一行中。

为什么只在LIKE条件之间不使用OR运算符? :)

我的意思是

SELECT * FROM table_one WHERE dates LIKE '%dayOfMonth":3%' OR dates LIKE '%dayOfMonth":5%' 

此处的一般规则:不必在任何情况下都使用REGEXP。使用regexp,您将失去INDEX搜索优势。.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。