【发布时间】:2014-01-14 22:49:49
【问题描述】:
我有一些文本列,格式类似于
["some text", ]
让这个列有名字 col1。然后做
SELECT columname FROM table WHERE col1 = '["some text", ]'
我什么也没收到。但随着
SELECT columname FROM table WHERE col1 LIKE '["some text", ]'
我收到所需的数据。我真的不明白为什么会这样。我想使用 =,因为我读了很多 LIKE 慢得多。而且我真的不明白为什么会这样。
统一更新: 根据要求提供更多信息
CREATE TABLE IF NOT EXISTS fulldata (col1 TEXT, data TEXT);
插入我通过 QSqlQuery 做的准备
insertData.prepare("INSERT INTO fulldata(col1 , data) "
" VALUES(:col1, :data);");
insertData.bindValue(":col1", currentFilter);
currentFilter 是 [ "2014-01-14 00:00:00", 2 ]
Select I also do using QSqlQuery with prepare
selectQuery.prepare("SELECT data FROM fulldata WHERE col1 = :col1 ");
selectQuery.bindValue(":col1 ", strFilter);
strFilter 也是 [ "2014-01-14 00:00:00", 2 ]
我也确实从 Qt 5.1 示例中的“Qt SQL Browser”中进行选择,结果与代码相同。
我的 SQLite 版本 = 3.7.17
【问题讨论】:
-
得到不同的结果很奇怪。但是,在没有通配符(即 % 符号)的情况下使用 LIKE 确实没有意义,但是如果您这样做,速度应该相似,请检查:stackoverflow.com/questions/404226/…
-
在任一绑定值中是否有任何前导/尾随空格或类似的空格会导致二进制整理器不匹配?
-
@laalto 不,我仔细检查了..