【问题标题】:How to query similar records in SQLite database from Android?如何从 Android 查询 SQLite 数据库中的相似记录?
【发布时间】:2011-05-05 04:24:49
【问题描述】:

假设一个 SQLite 数据库列包含以下值:
U Walther-Schreiber-Platz

如果用户搜索以下字符串,我想使用查询查找此记录或任何类似记录:

  • walther schreiber
  • u walther
  • walther-schreiber platz
  • [任何其他类似的字符串]

但是我想不出任何可以做到这一点的查询。特别是如果用户没有输入- 字符。

示例:
select * from myTable where value like '%walther schreiber%'; 不会返回结果,因为缺少 -

谢谢, 罗伯特

【问题讨论】:

  • 用百分号'%'替换所有空格'',如:'%walther%schreiber% and lower or upper both of the where子句

标签: android sqlite


【解决方案1】:

所以,正如我在评论中所说,我认为您可以按照以下方式进行查询:

select * from myTable where LOWER(value) like <SearchValue>

我假设您正在以编程方式从用户那里收集&lt;SearchValue&gt;,因此可以执行以下操作:&lt;SearchValue&gt; 需要:用户的搜索字符串,经过适当清理以避免SQL injection attacks,转换为小写,所有空格都转换为'%',以便它们匹配零个或多个字符...

所以你会(例如):

select * from myTable where LOWER(value) like '%walther%schreiber%'
select * from myTable where LOWER(value) like '%walther-schreiber%platz%'

等等...但是,这确实假设词序是相同的,在您的示例中是...

【讨论】:

  • 非常感谢。这就是我一直在寻找的。想不出来,虽然它看起来有点合乎逻辑:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多