1

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

我有一个这样的查询:

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

我的表是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 值?

4

2 回答 2

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 用于 SELECT:

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

并为 INSERT/UPDATE/DELET 执行查询:

mDb.executeQuery('Query Here',null);
于 2012-10-03T16:24:30.733 回答
0

我发现了问题:例程对 ID 进行了加盐处理,因此它们与纯文本字符串不同。

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

于 2012-10-04T08:14:56.513 回答