如何在oracle数据库中input“&”这样的特殊字符?

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

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

如果我尝试运行这个查询,我得到一个popup窗口,它要求我inputOracle_14值。

如何在oracle db的insert语句中input特殊字符?

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

 SQL> set define off; 

在执行SQL语句之前。 检查替代variables的轮stream。

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

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

贾斯汀的答案是要走的路,但也作为一个简要的信息,你可以使用chr()函数与你想插入的字符的ascii值。 对于这个例子,它将是:

 INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 '||chr(38)||' Oracle_14'); 

插入已经有'&'的值。 使用以下代码。

 Set define off; Begin INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 & Oracle_14'); End ; 

并从甲骨文或蟾蜍编辑按F5。

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

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

我们还可以使用其他的方式,例如在特殊字符“Java_22&Oracle_14”中插入值,我们可以使用下面的格式。

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

虽然它认为是3种不同的标记,但我们没有任何select,因为在oracle文档中提供的转义序列的处理是不正确的。

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

 INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', ''||chr(34)||'JAVA'||chr(34)||''); 

对于特殊字符集,您需要检查UNICODE图表。 select你的字符后,你可以使用下面的sql语句,

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

dōTTTT

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

 Insert into Table Value(CONCAT('JAVA ',CONCAT('& ', 'Oracle')); 

有三种方法可以这样做:

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

2)简单地通过在单引号内连接保留字并连接它。 例如select“Java_22”|| '&'|| ':'|| 双 – (:)的“Oracle_14”是可选的。

3)通过连接使用CHR函数。 例如select“Java_22”|| 字符(38)||” Oracle_14'从双

希望这个帮助!

strAdd = strAdd.replace( “&”, “ '||' 和 '||'”);

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

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

我尝试了逃脱没有成功。

为了实现,我用文件系统创build了一个文件insert.sql

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

然后从sqlPlus我执行

 @insert.sql 

并插入行。

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

'Java_22 \&Oracle_14'

或大括号来逃避一串字符或符号

'{Java_22&Oracle_14}'