在我使用的各种SQL产品中,问号(?)标记查询中的输入参数。
我如何逃避这种行为并搜索包含问号的文本,例如。。。
SELECT *
FROM A_TABLE
WHERE A_FIELD = 'This is a question mark not an input parameter?'
上面的问号是一个字面上的问号,而不是占位符。如果答案是特定于产品的,那么我目前正在使用Derby(又名JavaDB)。
您根本不需要逃离?
。它与您发布的案例中的WHERE
子句没有特殊含义。
如前所述跟在等号后面不会起通配符的作用。要在包含问号的字段中搜索任何行,请使用:
SELECT * FROM A_TABLE
WHERE A_FIELD LIKE '%[?]%'
如果您的用例是检查jsonb
列是否具有您指定的键,那么简单地添加?
将返回Cause: org.postgresql.util.PSQLException: No value specified for parameter
。
在mybatis中,解决方案是不使用单个问号(?
),而必须使用双问号(??
)。
例如:SELECT * from table where jsonb_column ?? 'key'