比较TEXT变量不起作用

时间:2012-10-03 15:45:37

标签: android sqlite

当我尝试在Android SQLite DB上比较TEXT时,我遇到了问题。

我有这样的查询:

select * from myTable where _id='some.text.dots.are.really.there!'

myTable是TEXT PRIMARY KEY。我正在尝试选择并更新表格中的一些数据。当我做SELECT *时,有一些并返回。

Android代码(带有where子句)如下所示:

mDb.query(TABLE_TRANSACTIONS, TABLE_TRANSACTIONS_COLUMNS, COLUMN__ID + " = ?", 
            new String[] {id }, null, null, null);

但是

mDb.query(TABLE_TRANSACTIONS, TABLE_TRANSACTIONS_COLUMNS, COLUMN__ID + " = '" + id + "'", 
            null, null, null, null);

既不起作用。如何在Android上的SQLite中比较TEXT值?

2 个答案:

答案 0 :(得分:1)

SQLite在比较字符串时也会考虑TEXT CASE(UPER CASE / LOWER CASE),因此您可以使用COLLATE NOCASE,这会强制SQLite忽略TEXT CASE

试试这个:

SELECT * 
FROM   myTable 
WHERE  _id='some.text.dots.are.really.there!' 
COLLATE NOCASE; 

您可以使用rawQuery for SELECT:

mDb.rawQuery('Query Here',null);

和executeQuery for INSERT / UPDATE / DELET:

mDb.executeQuery('Query Here',null);

答案 1 :(得分:0)

我发现了问题:例程正在腌制ID,因此它们与纯文本字符串不同。

愚蠢的错误......无论如何,谢谢你们。