19
私のクエリが文字列リテラル内のSqliteバインディング
である場合、sqlite3を使用するSELECT * FROM table WHERE title LIKE '%x%'
x
を含む文字列と一致します。私はx
を以下のようなバインド可能なパラメータにしたい:
SELECT * FROM table WHERE title LIKE '%x?%'
しかし、''
フォームは文字列リテラルのため動作しない。リテラル内に?
をエスケープする方法はありますか?私は、%
を含むバインド可能なパラメータを構築し、
SELECT * FROM table WHERE title LIKE ?
を使用することができると理解していますが、バインドインターフェイスではなくSQLインジェクションを扱うという点で、これにはより良い解決策がありますか?
これは単なるsqliteではありません。 '||'はSQL標準にあります。 PostgresとOracleがこれに従います。 MySQLとMSSQLはそれぞれ 'CONCAT()'と '+'を使いますが、両方とも非標準です。 – ephemient