【问题标题】:handling ampersand(&) in an sql statement [duplicate]在 sql 语句中处理与号(&)[重复]
【发布时间】:2012-02-25 18:18:00
【问题描述】:

可能重复:
How do I ignore ampersands in a SQL script running from SQL Plus?

我有一个 using sql 语句,其中 WHERE 子句中明确使用了一个 & 符号。

例如select * from table1 where column1 IN('abc',"'a & b',''def')

在此语句中,我将 IN 子句的值作为逗号分隔的字符串 egstring1="'abc',"'a & b',''def'"

我直接使用它来构建我的 sql 查询。 现在,当我尝试运行此查询时,我无法执行此查询,因为当我在运行时执行它时,它要求为 & 号替换字符。

如何更改或更改我的查询,以便可以使用 & 符号

我是否应该在要操作的字符串上使用正则表达式以使其工作。因为我在 sql 查询中使用的字符串(逗号分隔值)来自文本框。 我使用的数据库是Oracle

请帮忙

【问题讨论】:

  • 您是否尝试过使用参数化查询?

标签: javascript sql regex oracle


【解决方案1】:

This Oracle Technology Network forum discussion 为这个问题提供了各种解决方法。在我看来,最简单的是第一个建议,就是替换这个:

'a & b'

用这个:

'a &' || ' b'

但您可以浏览该页面,看看是否有任何其他想法对您来说听起来更好。

(虽然我不得不说——我有点担心你会收到这个错误。这听起来好像你只是将用户提交的文本插入 SQL*Plus ......其中,如果是这样,那真的很糟糕。如果用户提交'; \n DROP TABLE users;会发生什么?)

【讨论】:

    【解决方案2】:

    如果'a&b' 是一个列名,你可以像下面这样使用。

    'A&B'
    

    它将解决识别&符号问题。
    正如@ruakh 使用|| 所说的那样,这个技巧会奏效。
    这些Question1Question2 将为您提供帮助。
    欲了解更多信息,请查看forum

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      • 2013-01-18
      • 2013-09-01
      • 2012-09-17
      • 1970-01-01
      • 2021-10-27
      • 2021-08-08
      相关资源
      最近更新 更多