【问题标题】:Oracle special characters甲骨文特殊字符
【发布时间】:2011-04-09 20:12:14
【问题描述】:

我有一个问题

select * from table where name in ('52 T&M', '60 T&M');

“&”导致查询需要一个参数。如何将查询中的“&”限定为 sting,以便查询可以找到其中包含“&”字符的字符串?

【问题讨论】:

标签: sql oracle plsql oracle10g special-characters


【解决方案1】:

我通常会按照 omg 的建议使用 set define off,但也可以这样做:

select *
from table
where name in ('52 T'||Chr(38)||'M', '60 T'||Chr(38)||'M');

【讨论】:

    【解决方案2】:

    & 符号(“&”)是一个被 SQLPlus 解释为变量占位符的字符。使用:

    SET DEFINE OFF
    

    【讨论】:

    • @OMG...该代码在程序中的下落?正如我在下面提到的,查询是在过程中 BEGIN 之前定义的 CURSOR 中
    • @MikeTWebb:在脚本的顶部。我打赌这是一个匿名的 PLSQL 块...
    • +1 我今天学到了新东西! @MikeTWebb 它将作为脚本的第一行或附近。脚本是通过CREATE OR REPLACE .... 定义过程、包体或函数,还是脚本包含匿名PL/SQL 块。
    • 我知道使用 & 符号来定义提示。我不知道如何关闭它们。我一直在使用字符串连接作为解决方法。 ('Foo&'||'Bar' 代表'Foo&Bar'
    【解决方案3】:

    我假设你使用 sqlplus,所以 在

    之前执行

    设置扫描关闭

    【讨论】:

    • @Michael....查询字符串位于 CURSOR 的定义中。我试过你的建议,但怀疑 CURSOR 定义搞砸了
    猜你喜欢
    • 2021-09-06
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多