【问题标题】:how to convert "'" to "''"如何将“'”转换为“''”
【发布时间】:2025-12-12 07:45:01
【问题描述】:

我正在处理用户数据并将其存储到可能包含"'""''""'''" 的oracle。 我曾尝试使用replaceAll() 方法转换数据,但它输出的结果不是我的预期结果。

尝试 replaceAll() 但不起作用

String sAddress1="";
sAddress1 = "ABC''S ROA'''D";

sAddress1 = sAddress1.replaceAll("'","''");

我希望 sAddress1 的输出是:

“ABC''''S ROA''''''D”

但实际输出是:

“ABC''S ROA''''D”

【问题讨论】:

  • 为我工作。显示您的完整代码。
  • 这里也一样。我得到了你期望的输出
  • 你确定你的字符串包含单引号吗?也许它包含看起来与单引号非常相似的重音?
  • 你为什么要这样做?如果要使其在查询中使用安全:不要这样做。改用带参数的预处理语句。

标签: java


【解决方案1】:

您的代码可以正常工作。问题在于您的 Oracle 数据库中的持久性。

您以哪种方式将其存储到数据库中?您使用的是原生 SQL 吗?你在使用 JPA/Hibernate 吗?

您可能正在使用本机 SQL,因为 JPA/Hibernate 选项应该为您处理引用。

查看 Oracle 文档 https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm#sthref344 中的文本文字部分

或查看有关为 Oracle DB 转义单个引用的其他答案 PL/SQL, how to escape single quote in a string? Escaping single quote in PLSQL

【讨论】:

  • 即使是纯 JDBC 使用也可以为您执行此操作。从技术上讲,Hibernate 和 JPA 都会为您引用,但使用带参数的准备好的语句。