在我使用的各种 SQL 产品中,问号 (?) 标记查询中的输入参数。
如何逃避这种行为并搜索包含问号的文本,例如......
SELECT *
FROM A_TABLE
WHERE A_FIELD = 'This is a question mark not an input parameter?'
...上面的问号是文字问号,而不是占位符。如果答案是特定于产品的,我目前正在使用 Derby(又名 Java DB)。
在我使用的各种 SQL 产品中,问号 (?) 标记查询中的输入参数。
如何逃避这种行为并搜索包含问号的文本,例如......
SELECT *
FROM A_TABLE
WHERE A_FIELD = 'This is a question mark not an input parameter?'
...上面的问号是文字问号,而不是占位符。如果答案是特定于产品的,我目前正在使用 Derby(又名 Java DB)。
你根本不需要逃跑?
。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'