在 Java 中转义双引号 Oracle 准备语句
Escaping double quotes Oracle prepared Statement in Java
我检查了类似的问题,但没有接受 table 解决方案。 table 列中包含引用值列表:
ROW COLOR_ARRAY
=== ============
1 "RED", "BLUE", "GREEN", "LIGHT-BLUE"
2 "RED", "GREEN", "LIGHT-BLUE"
我想提取所有包含精确值的行 "BLUE" 因此,应该只返回第 1 行。
我准备好的声明:
// must look for color wrapped in double quotes "BLUE"
String sql = "Select * from myTable where COLOR_ARRAY LIKE '%\"?\"%'";
selectColor = connection.prepareStatement(sql);
String myColor = "BLUE";
selectTags.setString(1, myColor);
rs = selectTags.executeQuery();
我收到无效的列索引错误。我怀疑?我准备好的语句中的标记在尝试转义我的 LIKE 子句中的双引号时迷路了。
我试过用 \\" 和 \u0022 转义双引号,但没有成功。
在 JDBC 中,您不能在现有的 SQL 字符串中放置占位符 ?
;该值必须是独立的。 JDBC 会将 SQL 字符串中的 ?
视为文字 ?
字符;它只是字符串的一部分。但是,转义 Java 字符串中的双引号字符是正确的。
将 ?
占位符值与查询字符串中的 %
SQL 通配符字符串连接起来。
String sql = "Select * from myTable where COLOR_ARRAY LIKE '%\"' || ? || '\"%'";
我检查了类似的问题,但没有接受 table 解决方案。 table 列中包含引用值列表:
ROW COLOR_ARRAY
=== ============
1 "RED", "BLUE", "GREEN", "LIGHT-BLUE"
2 "RED", "GREEN", "LIGHT-BLUE"
我想提取所有包含精确值的行 "BLUE" 因此,应该只返回第 1 行。 我准备好的声明:
// must look for color wrapped in double quotes "BLUE"
String sql = "Select * from myTable where COLOR_ARRAY LIKE '%\"?\"%'";
selectColor = connection.prepareStatement(sql);
String myColor = "BLUE";
selectTags.setString(1, myColor);
rs = selectTags.executeQuery();
我收到无效的列索引错误。我怀疑?我准备好的语句中的标记在尝试转义我的 LIKE 子句中的双引号时迷路了。
我试过用 \\" 和 \u0022 转义双引号,但没有成功。
在 JDBC 中,您不能在现有的 SQL 字符串中放置占位符 ?
;该值必须是独立的。 JDBC 会将 SQL 字符串中的 ?
视为文字 ?
字符;它只是字符串的一部分。但是,转义 Java 字符串中的双引号字符是正确的。
将 ?
占位符值与查询字符串中的 %
SQL 通配符字符串连接起来。
String sql = "Select * from myTable where COLOR_ARRAY LIKE '%\"' || ? || '\"%'";