112

我有一个 SQL 脚本,它创建一个包含与符号 (&) 的注释的包。当我从 SQL Plus 运行脚本时,系统会提示我输入以 & 开头的字符串的替代值。如何禁用此功能以使 SQL Plus 忽略 & 符号?

4

7 回答 7

198

这可能对您有用:

set define off

否则,&符号需要在字符串的末尾,

'StackOverflow &' || ' you'

编辑:保存时我很高兴...这是从博客中引用的。

于 2008-09-22T23:25:36.213 回答
30

如果您有时使用替换变量,您可能不想关闭定义。在这些情况下,您可以将 & 符号从其等效数字转换为 in|| Chr(38) ||或将其作为单个字符附加为 in || '&' ||

于 2010-12-08T22:26:47.227 回答
14

我用下面的代码解决了:

set escape on

并在 & 旁边放一个 \ 在左边 'value_\&_intert'

攻击者

于 2012-11-22T10:56:25.343 回答
8

您可以通过使用SET DEFINE <1_CHARACTER>

默认情况下,DEFINE 功能本身是开启的,并且它被设置为&

它可以被关闭 - 如前所述 - 但也可以通过将其设置为不同的值来避免它。非常清楚您将其设置为什么标志。在下面的示例中,我选择了 # 字符,但该选择只是一个示例。

SQL> select '&var_ampersand #var_hash' from dual;
Enter value for var_ampersand: a value

'AVALUE#VAR_HASH'
-----------------
a value #var_hash

SQL> set define #
SQL> r
  1* select '&var_ampersand #var_hash' from dual
Enter value for var_hash: another value

'&VAR_AMPERSANDANOTHERVALUE'
----------------------------
&var_ampersand another value

SQL>
于 2014-12-07T17:34:48.927 回答
4

set define off <- 这是我找到的最佳解决方案

我也试过...

设置定义 }

我能够插入几条包含&符号'&'的记录,但我不能在文本中使用'}'字符所以我决定使用“设置定义关闭”并且一切正常。

于 2015-05-19T18:35:45.790 回答
3

根据这个不错的常见问题解答,有几个解决方案。

\如果您可以修改注释,您也可以使用反斜杠字符转义与号。

于 2008-09-22T23:27:16.770 回答
0

我有一个 CASE 语句,其中 WHEN column = 'sometext & more text' THEN ....

我将其替换为 WHEN column = 'sometext' || CHR(38) || '更多文字'然后...

您也可以使用 WHEN 列 LIKE 'sometext _ more text' THEN ...

(_ 是单个字符的通配符)

于 2018-07-10T04:04:00.950 回答