首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较文本变量不起作用

比较文本变量不起作用
EN

Stack Overflow用户
提问于 2012-10-03 23:45:37
回答 2查看 115关注 0票数 1

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

我有一个这样的查询:

代码语言:javascript
复制
select * from myTable where _id='some.text.dots.are.really.there!'

myTable是TEXT PRIMARY KEY。我正在尝试选择和更新表中的一些数据。当我执行SELECT *时,会返回它们。

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

代码语言:javascript
复制
mDb.query(TABLE_TRANSACTIONS, TABLE_TRANSACTIONS_COLUMNS, COLUMN__ID + " = ?", 
            new String[] {id }, null, null, null);

代码语言:javascript
复制
mDb.query(TABLE_TRANSACTIONS, TABLE_TRANSACTIONS_COLUMNS, COLUMN__ID + " = '" + id + "'", 
            null, null, null, null);

两者都不起作用。如何在安卓系统上比较SQLite中的文本值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-04 16:14:57

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

愚蠢的错误...不管怎样,谢谢你们。

票数 0
EN

Stack Overflow用户

发布于 2012-10-04 00:24:31

在比较字符串时,SQLite还会考虑TEXT CASE (大小写),因此您可以使用COLLATE NOCASE,这会强制SQLite忽略TEXT CASE

试试这个:

代码语言:javascript
复制
SELECT * 
FROM   myTable 
WHERE  _id='some.text.dots.are.really.there!' 
COLLATE NOCASE; 

您可以使用rawQuery进行选择:

代码语言:javascript
复制
mDb.rawQuery('Query Here',null);

和用于插入/更新/删除的executeQuery:

代码语言:javascript
复制
mDb.executeQuery('Query Here',null);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12712086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档