查询在SQL Server中工作,但在sqlite中不起作用

时间:2012-09-27 10:43:22

标签: python sqlite sql-server-2005 sqlalchemy

在python的一个程序中,我通过sqlalchemy查询SQL Server 2005:

SELECT * FROM table 
WHERE (cipher=:value? OR CHARINDEX(cipher_mask,:value?)!=0)
and NOT exists( SELECT * FROM table WHERE CHARINDEX(not_cipher_mask,:value?)!=0 AND code=:code?)
and code=:code?

这很好用。

我正在尝试为SQLite创建类似的查询(它不使用函数CHARINDEX

SELECT * FROM table 
where (cipher=:value?  OR :value?  like cipher_mask+'/%')
and not exists (SELECT * FROM table  where code=:code? and :value? like not_cipher_mask +'/%') and code=:code?

这在SQL Server 2005中运行良好,但在SQLite中,我得到一个空结果

为什么不在这里工作?

P.S。表中的所有列都是VARCHAR,具有相同的数据

1 个答案:

答案 0 :(得分:1)

CHARINDEX(a, b)b LIKE '%' || a || '%'类似。 (如果%不在a的开头,则需要第一个b才能找到||。)

字符串连接使用+,而不是{{1}}。