sqlite文本数据类型比较不起作用

时间:2014-05-29 10:18:23

标签: sql sqlite

我在SQLite数据库中有一个带有数据类型文本的表,但是当我进行比较时,如果我这样做它就不起作用了:

select * from scanned_dbs where db = 'cdd_db';

enter image description here

但如果我将查询更改为:

select * from scanned_dbs where db like 'cdd_db';

有效。但是,正如valex所指出的那样它也会匹配cddAdb,cddBdb,......等等,所以这不是正确的方法。

我找到的另一种方法是:

select * from scanned_dbs where cast(db as varchar) = 'cdd_db';

所以任何人都可以告诉我为什么这是有效的而不是第一个直接比较......

1 个答案:

答案 0 :(得分:3)

LIKE模式中的

Because下划线(“_”)匹配字符串中的任何单个字符。

因此,当您使用db = 'cdd_db'时,唯一匹配的db值就是'cdd_db'。但是,当您使用LIKE运算符db like 'cdd_db'时,“_”符号就是一种模式,因此db值匹配:cddAdb,cddBdb,cddcdb,cddddb,cdd1db, ....