【问题标题】:How to escape single quote in sql which is causing' quoted string not properly terminated '? [duplicate]如何在 sql 中转义导致“引用的字符串未正确终止”的单引号? [复制]
【发布时间】:2012-07-26 11:43:42
【问题描述】:

我正在尝试从数据库 (>10K) 中读取术语,并且在另一个查询中使用该术语。我在 Oracle 中收到以下错误:

引用的字符串没有正确终止'

我做到了

term.replaceAll("'", "\\'");

但这似乎对我不起作用。此外,这些术语在转换为文本时是来自文档的标记。有没有正则表达式可以解决这个问题?

确切的 SQL 查询是:

String sql = "Select * from indexDB where (DocID=" + d.getDocId() + "and Term='" + term + "')";

我正在使用 Java。替换对我不起作用。

【问题讨论】:

  • 你需要阅读SQL Injection
  • 另请参阅bobby-tables.com,了解有关如何以您使用的任何语言使用参数化查询的详细信息。这将保护您免受 Oded 提到的 SQL 注入。
  • 是的,通过它,参数化查询做到了!非常感谢!

标签: java sql regex oracle


【解决方案1】:

你可以通过重复单引号来转义它:

term.replaceAll("'","''");

更好的选择是参数化查询。例如,我们必须了解您的客户语言。

【讨论】:

  • Oracle中有更多特殊字符,不只是字符 ' ?跨度>
猜你喜欢
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
相关资源
最近更新 更多