2014-01-14 38 views
0

我有一些文本列,有像选取一些文字,包含了方括号

["some text", ] 

格式让此列名COL1。并且做

SELECT columname FROM table WHERE col1 = '["some text", ]' 

我什么都没收到。但与

SELECT columname FROM table WHERE col1 LIKE '["some text", ]' 

我收到需要的数据。我真的不明白为什么会这样。我想用=,'cos我读了很多,LIKE慢得多。而且我真的不明白为什么会这样。

UPD: 根据要求更多信息

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年1月14日00:00:00” ,2]

选择我也使用QSqlQuery与准备

selectQuery.prepare("SELECT data FROM fulldata WHERE col1 = :col1 "); 
    selectQuery.bindValue(":col1 ", strFilter); 

strFilter的也是[ “2014年1月14日00:00:00”,2]

此外,我从 “Qt的SQL浏览器” 从Qt的选择5.1示例中,相同的结果来自代码。

SQLite的版本= 3.7.17

+0

很奇怪你会得到不同的结果。然而,没有通配符(即%符号)使用LIKE确实没有意义,但如果你的速度应该类似,请检查:http://stackoverflow.com/questions/404226/sql-like-with-no- wildcards-the-same-as –

+0

任何前导/尾随空白或类似的绑定值会使二进制collat​​or不匹配? – laalto

+0

@laalto不,我再次检查.. – user3136871

回答

0

两者都返回正确的结果。

入住这里:http://sqlfiddle.com/#!5/4c033/4

我认为你错过了别的东西,只是一些细节,你没有在这个问题提了。

是的,LIKE确实慢得多。

编辑:

试了一下我的本地机器上,仍然没有问题。

enter image description here

+0

当然我真正的表格以其他方式调用。确实在你的链接上这两个变体的作品我使用SQLite 3,在那里我得到了问题 – user3136871

+0

@ user3136871中描述的行为,这真的很奇怪。答案已更新。也许你应该更新你的问题,你的确切陈述你有1)创建表; 2)数据插入; 3)数据选择。我认为这是你错过的一些细节,哪些在问题中没有提到。 –

+0

我更新了问题,添加了所有信息 – user3136871