假设我有一个查询,例如SELECT * FROM my_table where name = 'Debbie O'Brian'
. 您可能知道在 SQL Server 中,我们只需要添加另一个'
以使其忽略单引号。这是我喜欢自动执行的操作。
简而言之,我需要'
在''
两个封闭的'
. 这是我到目前为止所拥有的:
String text = "SELECT * FROM my_table where name = 'Debbie O'Brian'";
String[] splitArray = text.split(" '");
for (int i = 0; i < splitArray.length; i++) {
String str = splitArray[i];
if (str.endsWith("'"))
str = str + " ";
// replace all single quotes
str = str.replace("'", "''");
// revert last replacement
str = str.replace("'' ", "' ");
splitArray[i] = str;
}
StringBuilder builder = new StringBuilder();
for (int i = 0; i < splitArray.length; i++) {
builder.append(splitArray[i]).append(" '");
}
System.out.println(builder.substring(0, builder.length() - 2).toString());
问题是我在开始之前依赖于空白的存在'
。我的问题是,如果没有这个预先假设,我怎么能做到这一点?非常感谢任何帮助(甚至是算法的建议)。请提及查询中可能有多个单引号字符串。
编辑:我正在使用 Hibernate 执行本机 SQL 并将整个 SQL 查询作为输入。