2012-02-28 118 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