【问题标题】:How to escape single quotes in Oracle? [duplicate]如何在 Oracle 中转义单引号? [复制]
【发布时间】:2025-12-17 06:10:01
【问题描述】:

我有一列包含存储为文本字符串的某些表达式,其中包括单个引号,例如“错过的交易”(包括引号)

如何在出现这种情况时使用 where 子句?

select * from table where reason = ''missed transaction''

不起作用,我不能使用替换功能,因为它还需要在其语法中使用单引号。晦涩难懂的问题,我知道。但感谢您的帮助。

【问题讨论】:

  • 我不了解 Oracle,但大多数 SQL 系统使用“加倍”作为转义序列,例如逃避' 使用''。你试过'''missed transaction'''吗?
  • 如果您的查询来自 .net、java、coldfusion 等应用程序,请使用查询参数。转义引号是它们的好处之一。

标签: sql oracle


【解决方案1】:

您需要通过将' 加倍来转义它们:

select * from table where reason = '''missed transaction''';

【讨论】:

    【解决方案2】:

    q 引号语法使这种事情变得更容易:

    select * from table where reason = q'['missed transaction']'
    

    '[]' 之间的所有内容都是按字面解释的,因此无需将所有引号都加倍,不管有多少引号。

    【讨论】:

    • 这非常适合我的姓氏搜索,例如像 O'Reilly 这样的姓氏:SELECT * WHERE SURNAME LIKE q'[" + surname + "%]' ";