在SQL WHERE子句中转义问号(?)

时间:2012-08-29 10:00:20

标签: sql

在我使用的各种SQL产品中,问号(?)标记查询中的输入参数。

如何逃避该行为并搜索包含问号的文本,例如......

SELECT *
FROM   A_TABLE
WHERE  A_FIELD = 'This is a question mark not an input parameter?'

...上面的问号是字面问号,而不是占位符。如果答案是特定于产品的,我目前正在使用Derby(又名Java DB)。

2 个答案:

答案 0 :(得分:4)

您根本不需要逃避?。与您发布的情况一样,它与WHERE子句没有特殊含义。

答案 1 :(得分:0)

如果您的用例是检查 jsonb 列是否具有您指定的键,那么只需添加 ? 将返回 Cause: org.postgresql.util.PSQLException: No value specified for parameter

在 mybatis 中,解决方案是使用双问号 (?) 而不是使用单问号 (??)。

例如: SELECT * from table where jsonb_column ?? 'key'