如何解决如何在SQLite中使用查询字符串列表执行LIKE查询
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 举报,一经查实,本站将立刻删除。