在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
,具有相同的数据
答案 0 :(得分:1)
CHARINDEX(a, b)
与b LIKE '%' || a || '%'
类似。 (如果%
不在a
的开头,则需要第一个b
才能找到||
。)
字符串连接使用+
,而不是{{1}}。