1

Pythonの1つのプログラムで、sqlalchemyを介してSQLServer2005にクエリを実行しています。

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?

これはSQLServer2005では正常に機能しますが、SQLiteでは空の結果が得られます

なぜここで機能しないのですか?

PSテーブルのすべての列はVARCHAR同じデータです

4

1 に答える 1

1

CHARINDEX(a, b)に似ていb LIKE '%' || a || '%'ます。(最初に最初%にないaかどうかを確認する必要がありbます。)

文字列の連結では||、ではなく、を使用し+ます。

于 2012-09-27T11:14:10.717 に答える