以下查询在Oracle 12c中是正确的:
SELECT *
FROM dual
MATCH_RECOGNIZE (
MEASURES a.dummy AS dummy
PATTERN (a?)
DEFINE a AS (1 = 1)
)
因为?
字符被用作正则表达式字符而不是绑定变量,所以无法通过JDBC工作。
假设我想将其作为带有绑定变量的PreparedStatement
运行,正确的方法是如何转义?
?
注意:
- 我在JDBC规范讨论邮件列表中找到了一篇讨论,但没有解决这个问题:http://mail.openjdk.java.net/pipermail/jdbc-spec-discuss/2013-October/000066.html
- PostgreSQL在JSON操作符方面存在类似的问题:How do I use PostgreSQL JSON(B) operators containing a question mark "?" via JDBC
PreparedStatement
吗? - user330315dual
,而是使用了一个非常复杂的派生表,并且其中有很多绑定变量,以避免 SQL 注入等问题。 - Lukas Eder