gpt4 book ai didi

java - Java 中转义双引号 Oracle 准备好的语句

转载 作者:行者123 更新时间:2023-12-01 10:21:09 27 4
gpt4 key购买 nike

我检查了类似的问题,但没有找到可接受的解决方案。表格的一列中包含带引号的值列表:

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 '%\"' || ? || '\"%'";

关于java - Java 中转义双引号 Oracle 准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35610432/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com