我正在尝试搜索Sqlite数据库,具有以下条件:我想使用精确关键字找到一个字符串。让我向你解释一下。 我有3行如下:
我想用关键字" cat"来搜索这些行。我期待这个结果:
到目前为止,我正在使用此SQL代码:
Select * FROM MyTable WHERE Mycolumn Like '%cat%'
但是返回结果就是所有这三行:
如何才能获得预期的结果?
提前谢谢。
答案 0 :(得分:1)
您可以使用带有特殊图案边界的正则表达式。
Select * FROM MyTable WHERE Mycolumn = 'cat'
更正了我的回答我认为应该有效。
答案 1 :(得分:0)
LIKE子句的参数中的%
字符匹配任何字符串,包括空字符串。不幸的是,SQLite没有内置的REGEXP功能(Android的SQLite也没有)。
您可以做的是使用FTS(全文搜索)。如何执行此操作在此处描述:https://www.sqlite.org/fts3.html#section_1_2
使用您的示例,您可以这样设置:
create virtual table textsearch using fts4(content);
insert into textsearch (content) values ('catching cold'), ('i have a cat'), ('two cats was seen in your house yesterday')
然后,您可以使用MATCH
运算符进行简单的文本查询:
select * from textsearch where content match 'cat';
如果您在sqlite3 shell中尝试上述操作,那么您将看到它只返回“我有一只猫”#39;您可以使用匹配运算符执行更多操作,我在上面链接的页面上进行了解释。