2012-02-28 142 views
1

SQLite語句'abc' LIKE 'ABCd'將返回true。所以我的問題是如何進行SQLite查詢,該查詢只返回特定查詢的精確記錄匹配。SQLite查詢完全匹配

+0

'abc'='ABC'是假的? – bwoogie 2012-02-28 04:43:11

+0

我將不得不輸入所有可能的操作,例如'abc'='aBC'爲false,'aBc'='ABCd'爲假等等。 – 2012-02-28 04:45:07

回答

2

LIKE運算符有兩種可以通過編譯指示設置的模式。默認模式是LIKE比較對latin1字符的大小寫不敏感。因此,在默認情況下,以下表達式爲true:

'a' LIKE 'A' 

但是,如果啓用了case_sensitive_like編譯如下:

PRAGMA case_sensitive_like=ON; 

然後LIKE操作注重案例和上面的例子將評估爲假。

+0

什麼時候'abcd'與'abc'比較?它會迴歸真實嗎? – 2012-02-28 04:50:55

+0

不,它會返回false – 2012-02-28 05:15:38

1

對於確切的記錄匹配,您需要使用=符號。

ex:abc = abc。

如果你想要所有包含abc單詞的記錄。您需要在您的sqllite查詢中寫入

abc,如'%abc%'。

+0

如何將此聲明加入您的方法中。你能給我一個例子嗎? 'database.rawQuery( 「選擇」 \t \t \t \t \t \t + DataBaseHelper.VIRTUAL_SYSTEM_COLUMN_PATH + 「FROM」 \t \t \t \t \t \t + DataBaseHelper.VFS_DATABASE_TABLE + 「WHERE」 \t \t \t \t \t \t + BaseColumns._ID + 「MATCH?」,new String [] {c +「」})' – 2012-02-28 04:48:22

+0

DataBaseHelper.VIRTUAL_SYSTEM_COLUMN_PATH +「FROM」+ DataBaseHelper.VFS_DATABASE_TABLE +「WHERE」您的字段名像'%string you match%'and「+ BaseColumns._ID + 「比賽?」,新的String [] {c +「」}); – 2012-02-28 04:50:24

+0

請檢查我編輯的評論。謝謝,我輸入的那個有一些缺失的部分。 – 2012-02-28 04:53:43