【发布时间】:2012-09-26 02:05:27
【问题描述】:
我试图对表中的所有列执行区分大小写的搜索,所以我做了这样的事情
Select * From mytable Where col1 || '--' || col2 || '--' || etc like '%SomeValue%'
但它总是为大写和小写返回相同的结果。如果我这样做
Select * From mytable Where col1 like '%SomeValue%' OR col1 like '%SomeValue%' etc
我得到了想要的结果。这里的问题是我不能使用第二个查询,因为我有大约 36 列要搜索,并且写 col1 like '%SomeValue%' 最多 36 次是不必要的。
有人有解决办法吗?
【问题讨论】:
-
您可能需要考虑使用 sqlite 全文,将文本分解为单词并创建“长模式”索引或键回身份或组合的单词。似乎扫描 36 列是错误的方法...
-
我已经走了那条路,但它使所有其他查询变慢,我从这里得到了这个解决方案stackoverflow.com/questions/2428495/…
-
不一定是其他查询的主要路径 - 更像是这些搜索的旁边的查找表。如果您希望它非常快,该搜索表也可以使用 sqlite 的全文编译版本。
-
缺点是分词/索引的额外时间,或者如果索引上的一些延迟是可以接受的,您必须使其异步/后台。