54

我想&在我的插入语句中插入特殊字符。我的插入是:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 & Oracle_14');

如果我尝试运行此查询,我会收到一个弹出窗口,它要求我输入Oracle_14.

如何&在 oracle db 的插入语句中输入特殊字符?

4

13 回答 13

74

如果您在 SQL*Plus 或 SQL Developer 中,您想要运行

SQL> set define off;

在执行 SQL 语句之前。这将关闭对替换变量的检查。

像这样的 SET 指令是针对客户端工具(SQL*Plus 或 SQL Developer)的指令。它们具有会话范围,因此每次连接时都必须发出指令(如果要将默认值更改为将 DEFINE 设置为 OFF,则可以将指令放在客户端计算机的 glogin.sql 中)。您不会影响数据库中的任何其他用户或会话。

于 2010-11-14T00:13:22.077 回答
26

尝试'Java_22 '||'&'||' Oracle_14'

于 2010-11-14T00:16:17.297 回答
19

贾斯汀的回答是要走的路,但作为一个仅供参考,您可以将 chr() 函数与要插入的字符的 ascii 值一起使用。对于此示例,它将是:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 '||chr(38)||' Oracle_14'); 
于 2010-11-14T03:28:59.030 回答
7

你可以简单地通过跟随一个点来逃避 & 。试试这个:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 &. Oracle_14');
于 2017-09-06T20:02:43.463 回答
3

插入其中包含“&”的值。使用以下代码。

Set define off;

Begin

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 & Oracle_14');

End ;

然后在 Oracle 或 Toad 编辑器中按 F5。

于 2015-03-12T07:02:52.077 回答
1

有 3 种方法可以做到这一点:

1) 只需执行 SET DEFINE OFF;然后执行插入stmt。

2)只需在单引号内连接保留字并将其连接起来。例如选择'Java_22' || '&'|| ':' || dual --(:) 中的“Oracle_14”是可选的。

3) 通过使用 CHR 函数和连接。例如选择'Java_22' || chr(38)||' Oracle_14' 来自双

希望这有帮助!

于 2017-04-03T07:02:27.997 回答
0

我们也可以使用另一种方式,例如将带有特殊字符 'Java_22 & Oracle_14' 的值插入到数据库中,我们可以使用以下格式..

'Java_22 '||'&'||' Oracle_14'

尽管它认为是 3 个不同的令牌,但我们没有任何选择,因为 oracle 文档中提供的转义序列处理是不正确的。

于 2012-08-03T08:13:10.320 回答
0

如果要在开头或结尾添加转义字符,例如"JAVA",则使用:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', ''||chr(34)||'JAVA'||chr(34)||'');
于 2013-10-10T13:10:23.770 回答
0

对于特殊字符集,您需要检查 UNICODE Charts。选择你的角色后,你可以使用下面的 sql 语句,

SELECT COMPOSE('do' || UNISTR('\0304' || 'TTTT')) FROM dual;

--

dōTTTT _ _

于 2016-10-05T12:21:32.000 回答
0

你也可以像这样使用 concat :D

Insert into Table Value(CONCAT('JAVA ',CONCAT('& ', 'Oracle'));
于 2017-01-13T15:25:39.900 回答
0
strAdd=strAdd.replace("&","'||'&'||'");
于 2017-06-06T07:13:54.510 回答
-1

在我的情况下,我需要插入一行文本“请拨打 *001 寻求帮助”。在这种情况下,特殊字符是星号。

通过使用 sqlPlus 直接插入,它失败并出现错误“SP2-0734:未知命令开始......”

我尝试设置逃生但没有成功。

为了实现,我在文件系统上创建了一个文件 insert.sql

insert into testtable (testtext) value ('Please dial *001 for help');

然后从 sqlPlus 我执行

@insert.sql

并插入了行。

于 2017-03-24T19:25:35.243 回答
-4

您可以使用反斜杠字符来转义单个字符或符号

'Java_22 \& Oracle_14'

或大括号转义一串字符或符号

'{Java_22 & Oracle_14}'

于 2010-11-14T00:36:46.217 回答