在 PL/SQL Developer 中转义 & 符号

Posted

技术标签:

【中文标题】在 PL/SQL Developer 中转义 & 符号【英文标题】:Escape ampersand in PL/SQL Developer 【发布时间】:2011-08-18 07:16:44 【问题描述】:

我正在对 Oracle 数据库尝试一个简单的 INSERT 语句。其中一个值是 VARCHAR2 字段,并且插入语句包含一个 & 符号。我该怎么做呢?我试过以下方法:

    将 & 转义为 \& 并设置转义 设置扫描关闭(这会导致 ORA-00922 缺失或无效选项错误) set define off(这会导致 ORA-00922 缺失或无效选项错误)

还有其他想法吗?

【问题讨论】:

我已经在这个问题中使用 chr(38) 解决方案“解决”了它:***.com/questions/1137354/… 但想要更优雅的东西。 您是尝试通过 SQL 窗口还是命令窗口执行插入操作? Ray,您是否尝试过将定义设置为另一个角色,而不是完全关闭它?不确定它是否会有所帮助,因为我不使用 PLSQL Developer,但它可能...... SQL 窗口。这一点尤其重要,因为我们的部署团队(无论好坏)也遵循此程序。 @Ollie,是的,我做到了。结果相同。 【参考方案1】:

在 SQL 窗口的底部有一个用于禁用/启用替换变量的按钮:

【讨论】:

这很难找到。我花了 10 分钟浏览设置中的所有选项,然后才在网上找到这个。 这个答案也适用于 SQLTools。【参考方案2】:

我如何解决它是用另一个 & 转义 &。

例如:

INSERT INTO Foo (Bar) VALUES ('Up && Away');

效果很好。感谢大家的帮助

【讨论】:

确实如此,但注意不要用plsqld原生搜索替换工具将“&”替换为“&&”,否则可能会进入死循环。 不适合我...我的解决方案是答案“...INSERT INTO tablex VALUES ('Sid ' || '&' || 'Nancy');...”【参考方案3】:

PL/SQL Developer 的特性之一是需要时间来熟悉的,那就是有大量不同的窗口类型。

其中之一是 COMMAND 窗口,它基本上是一个 SQL*Plus 模拟器。我们可以运行 SQL*Plus 命令以及 SQL,所以 SET ESCAPESET DEFINE 和实际上 SET SCAN OFF 在那个窗口中工作。

【讨论】:

【参考方案4】:

你尝试过这样的事情吗?

INSERT INTO tablex VALUES ('Sid ' || '&' || ' Nancy');

改进我的第一个答案,您的问题与 PL/SQL Developer 有关。如果您在 PL/SQL Developer 命令窗口中执行您的块,您还可以使用标准的 SET DEFINE OFF,它的工作方式与 SQL*Plus 中的相同。

【讨论】:

我不认为这比 Ray 提到的 chr(38) 解决方案更优雅。 很正常,但这是我在一年前遇到类似问题时使用的那个。在orafaq.com/wiki/SQL_FAQ SQL*Plus 中也有一些不错的解决方案,例如 SET ESCAPE '\'、SET DEFINE ~ 或 SET SCAN OFF 很好的解决方案,比摆弄全局设置更令人愉快。短一点:'Sid &' || “南希”。【参考方案5】:

concat 对我来说非常好,下面是我在 select 语句中所做的:

select FUND_NM
FROM PERFORMANCE
WHERE upper(FUND_DESC) in ('My L&' ||'L FUNDS')

【讨论】:

【参考方案6】:

我使用chr(38),我需要在 PL/SQL 中使用与号。

addr:= 'mysite.com/order.aspx?no=5678' || CHR(38) || 'id=947';
--above line gives you 'mysite.com/order.aspx?no=5678&id=947';

【讨论】:

【参考方案7】:

这只是一个 SQL 编辑器问题。要解决此问题,只需使用 SET DEFINE OFF 编译程序; . PL(在服务器中执行)的执行不会遇到这个问题。

【讨论】:

以上是关于在 PL/SQL Developer 中转义 & 符号的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL,如何在字符串中转义单引号?

使用PL/SQL developer概览图剖析pl/sql代码

如何使用PL/SQL Developer查看和杀掉session

PL/SQL Developer 11 64bit 安装和配置

PL/SQL DEVELOPER执行计划的查看

PL/SQL Developer 登录 Oracle 12c(转)