您的位置:首页 > 数据库 > Oracle

oracle中查询或插入特殊字符

2012-10-23 16:00 441 查看
如单引号(''或')与符号(&)等

1.单引号:select '''' from aa01 结果为'

    select '''''' from aa01 结果为''

    select ''''||'xx'||'''' from aa01 结果为'xx'

    如果直接查询select ''' from aa01 会报错

    同样也可以用chr(39)函数将39ASCII码转换为对应的字符,即select chr(39)||'xx'||chr(39) from aa01

2.与符号:select '&&x=' from aa01 结果为&x=

    如果直接使用select '&x=' from aa01 则会报错

    同样也可以使用chr(38)转换,即select chr(38)||'x=' from aa01

针对'&'同样网上也提出这种解决方法:
在SQL*PLUS默认环境里会把'&字符'当成变量来处理.
有些时候我们也需要在SQL>的符号下输入'&字符', 只需要改变SQL*PLUS下一个环境变量define即可.
SQL> set define off;是把默认的&绑定变量的功能取消, 可以把'&字符'当成普通字符处理
SQL> set define on;打开&绑定变量的功能, &后面的字符串当变量使用.
SQL> show define;查看当前SQL*PLUS的define状态

举例说明:
---------------------------------------------------------------
SQL> CREATE TABLE TEST3 (
ID    NUMBER (2)    PRIMARY KEY,
NAME  VARCHAR2 (20));

SQL> show define;
define "&" (hex 26)

SQL> insert into test3 values(1,'sgs&a&n');
Enter value for a: abc
Enter value for n: 456
old   1: insert into test3 values(1,'sgs&a&n')
new   1: insert into test3 values(1,'sgsabc456')
1 row created.

SQL> commit;
Commit complete.

SQL> set define off;

SQL> insert into test3 values(2,'sgs&a&n');
1 row created.

SQL> commit;
Commit complete.

SQL> select * from test3;
ID NAME
-- --------------------
1 sgsabc456
2 sgs&a&n

但是针对以上网办法也有人提出异议如下:

SQL> truncate table demo;
Table truncated.

SQL> select * from demo;
no rows selected

SQL> desc demo;
Name Null? Type
----------------------------------------- -------- ----------------------
X CHAR(20)
SQL> insert into demo values ('scott&'||'tiger');
1 row created.

SQL> select * from demo;
X
--------------------
scott&tiger
SQL>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: