1

在 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 中,我得到一个空结果

为什么它在这里不起作用?

PS表中的所有列都VARCHAR具有相同的数据

4

1 回答 1

1

CHARINDEX(a, b)类似于b LIKE '%' || a || '%'。(您需要先%查找a它是否不在开头b。)

字符串连接使用||,而不是+

于 2012-09-27T11:14:10.717 回答