我首先会说我不认为我想做什么,但是说,我希望我错了,有人比我更了解。所以这是你的机会......证明你比我聪明:)
我想针对SQLite表进行搜索,查找“相似”的任何记录,而不必长时间写出查询。
为了澄清这是我知道我可以编写查询的方式:
select * from Articles where title like '%Bla%' or category like '%Bla%' or post like '%Bla%'
如果你只是检查几个列,这是有效的,并不是一个大问题,但如果你需要检查一堆,那么你的查询可以变得非常冗长和讨厌看起来非常快,更不用说有机会错别字。 (即:'Bla%'而不是'%Bla%')
我想知道的是,如果有这么简单的方法吗?
*下一个代码不能按照我想要的方式工作,但只是显示了我正在寻找的东西
select * from Articles where title or category or post like '%Bla%'
任何人都知道是否有办法指定多个“where”列应使用相同的搜索值而不为每列列出相同的搜索值?
提前致谢!
答案 0 :(得分:4)
我认为你考虑使用sqlite,你应该考虑使用全文搜索。它会让你尝试提高效率。
答案 1 :(得分:0)
我能想到的最快的事情是连接标题,类别和帖子,看看连接的字符串是否匹配'%Bla%'。为了使这个工作可靠,在连接时使用像','这样的分隔符(否则,你可以将标题'Bl'和笼子'a')。
我不知道在我的脑海中,在SQL中调用串联运算符是什么,我不确定,如果在通用SQL或SQLite中存在。
我的想法是,它看起来像是:
select * from Articles where concat(title, ',', category, ',', post) like '%Bla%'
答案 2 :(得分:0)
也许你想将你的字段连接成一个字符串,然后对着那个?
select * from Articles where (title || ';' || category || ';' || post) like '%Bla%'
中间的分号是任意的,可以确保“ROB”和“长矛”不会带来误报。
如果您不想提供字段,那就更复杂了......