2011-05-04 81 views
1

比方說,一個SQLite數據庫列包含以下值:
U Walther-Schreiber-Platz如何從Android中查詢SQLite數據庫中的相似記錄?

使用查詢我想找到這個記錄,或任何類似的記錄,如果以下字符串用戶搜索:

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

但我找不出任何可以做到這一點的查詢。特別是如果用戶不輸入-字符。

示例:
select * from myTable where value like '%walther schreiber%';由於缺少-而不會返回結果。

感謝, 羅伯特

+1

全部更換的百分比'%',就像:'%walther%schreiber%和低於或高於兩側的where子句 – forsvarir 2011-05-04 19:55:09

回答

1

所以,正如我在我的評論說,我覺得你可以沿着線查詢:

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

我假設你正在收集<SearchValue>從用戶編程,所以將能夠做到以下幾點:<SearchValue>將需要:用戶的搜索字符串,適當清理,以避免SQL injection attacks,轉換爲小寫,所有空格轉換爲'%',以便他們匹配零個或多個字符...

所以你必須(例如):

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

等......然而,這並假定詞序是一樣的,這在你的例子是...

+0

非常感謝。這是我正在尋找的。想不到,雖然看起來有點合乎邏輯:-) – 2011-05-05 06:59:31

相關問題