gpt4 book ai didi

java - 处理字符串中的撇号

转载 作者:行者123 更新时间:2023-11-29 10:02:51 24 4
gpt4 key购买 nike

假设我有一个查询,类似于 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 执行 native SQL 并将整个 SQL 查询作为输入。

最佳答案

处理 SQL 查询中的单引号和其他特殊字符的最佳方法是使用参数化查询。它也更安全。我建议搜索“SQL 注入(inject)”。这将教您如何防止和处理查询中的单引号。

关于java - 处理字符串中的撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18524402/

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