2013-10-21 23 views
1

我使用fts3創建了一個表格。我用下面的查詢得到的結果如何在SQLite中爲多列使用MATCH關鍵字?

 String query = "SELECT "+ID+" as _id," + 
     NAME + 
     " from " + TABLENAME + 
     " where " + NAME + " MATCH '" + inputKeyword + "';"; 
     Log.w(TAG, query); 

其中給出了基於該inputKeyword名稱的列表。

但它並不適用於多列工作,

String query = "SELECT "+ID+" as _id," + 
     NAME + 
     " from " + TABLENAME + 
     " where " + NAME + " MATCH '" + inputKeyword + "' AND "+ EMAILADDRESS + " MATCH '"+emailaddress+"';"; 

哪個不給任何結果,也說你不能在此查詢使用MATCH。 如何做到這一點?

+0

'EMAILADDRESS + ' 「+ EMAILADDRESS +」';「;?'是該位正確,我看到雙';'和' ' 」+ EMAILADDRESS +「';' – kabuto178

+0

看看這個(可能重複)問題:http://stackoverflow.com/questions/4057254/how-do-you-match-multiple-column-in-a-table-with-sqlite-fts3/14593298#14593298 – staaar

+0

可能重複的[如何你使用SQLite FTS3匹配表中的多列?](https://stackoverflow.com/questions/4057254/how-do-you-match-multiple-column-in-a-table-with-sqlite-fts3) – birdy

回答

1

您的查詢看起來是這樣的:

SELECT ID as _id, Name 
FROM TableName 
WHERE Name MATCH 'xxx' AND EmailAddress'yyy' 

這缺乏對第二列的匹配運算符。 你想應該是這樣的內容:

SELECT ID as _id, Name 
FROM TableName 
WHERE TableName MATCH 'Name:xxx EmailAddress:yyy' 
+0

這是行不通的,FTS只允許每個select語句有一個'MATCH',並且會爲你描述的語法拋出一個錯誤,staaar連接的問題有一個工作的解決方案,用它來代替 – pbuchheit

+0

更正。鏈接的問題要求匹配* any *列,而不是* all *。) –

0

顯然SQLite不支持合併或查詢與之相匹配的條件。工會工作

SELECT * 
FROM email_fts 
WHERE "to" MATCH '[email protected]' 

UNION 

SELECT * 
FROM email_fts 
WHERE "from" MATCH '[email protected]' 
相關問題