您现在的位置是:群英 > 数据库 > 关系型数据库
Oracle的转义字符有几种,用法是什么
Admin发表于 2022-05-14 14:55:095290 次浏览
这篇文章给大家分享的是“Oracle的转义字符有几种,用法是什么”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“Oracle的转义字符有几种,用法是什么”吧。


在oracle中的转义字符:1、单引号,用于引用字符串或对自身转义;2、双引号,用于将非法的格式符包装起来;3、“&”也就是and符号,用于接连两个转义自身;4、Escape,用于指定一个非特殊符号为转义符。

本教程操作环境:Windows10系统、Oracle 11g版、Dell G3电脑。

oracle的转义字符是什么

1、Oracle 特殊字符 转义

关键词:oracle 转义

环境:oracle9i plsql

在plsql里边执行:

update userinfo set pageurl='myjsp?page=1&pagesize=10' where id='test'

这条sql语句往数据库的pageurl字段放进去了一个url地址,但是执行的时候却并非那么理想,因为这其中有一个oracle的特殊字符,需要进行转义,那就是字符'&'.

怎么处理上例中的特殊字符?

两个办法:

1) update userinfo setpageurl='myjsp?page=1'||'&'||'pagesize=10' where id='test'

2) update userinfo setpageurl='myjsp?page=1'||chr(38)||'pagesize=10' where id='test'

其中||是连字符, chr(38)跟ASCII的字符转码是一致的。

plsql中还可以set define off来关闭特殊字符,还可以用show define来查看有些特殊定义的字符。

2、oracle 中如何转义 特殊字符

问: 如何转义 下划线 _

select * from ng_values where name like 'lady_%'

jieguo 结果显示 lady_test,lady_test,lady1

正确结果应该是:lady_test,lady_test

不包括lady1

请各位给出转义方法,3ks

answer:

select ... from ... where ... like '/_%' escape '/';

3、

insert into t(col) values(chr(ascii('&'))) ;

(方法一)

例:插入特殊字元'&'

SQL> SHOW DEFINE
define "&" (hex 26) ? <--- DEFINE的default值是 ‘&’
SQL> SET DEFINE OFF
SQL> SHOW DEFINE
define OFF
SQL> INSERT INTO <table_name> VALUES ('AT&T');

/

1 row created

(方法二)

SQL> SHOW ESCAPE
escape OFF <--- ESCAPE的default值是 OFF
SQL> SET ESCAPE ON
SQL> SHOW ESCAPE
escape "\" (hex 5c)
SQL> INSERT INTO temp_table VALUES ('select * from emp where ename =\&1');

1 row created.

几个测试方法:

SELECT 'myjsp?page=1&pagesize=10' FROM dual;
SELECT 'myjsp?page=1&pagesize=10' FROM dual;
SQL>   create   table   a  (b   varchar2(10));  
Table   created  
SQL>   insert   into   a  values('_a');

1 row inserted

SQL>   select   B   from  A   where   instr(b,'_a')>0;  
B  
----------  
_a  
select   B   from   A  where   b   like   '%\_a%'  escape   '\'

先启动转义符

set escape on

select   B   from   A  where   b   like   '%\_a%'  escape   '\';
select   B   from   A  where   b   like   '%\_a%'  escape   '\';

注意

在Oracle中双引号”不是转义字符,因此存储直接存储就可以了,不需要转义了。

oracle转义符有:

1,单引号

在ORACLE中单引号有两个作用:1)引用字符串;2)对自身转义。

引用字符串时,单引号是成对出现的;而对自身的转义,也必定是双数的,所以,一个sql语句中,单引号必定是成对的.

Select 'abc' a,'' b, '''' c, ' '' ' d From Dual;

复杂转义字符串可用连接符||拆分,便于理解。连接符号‘||’左右的单引号没有任何的关系,除非‘||’是作为字符串的一部分(这在动态SQL中很常见)。

Select 'name' || '''''' a, 'name''''' b From Dual;
Output:name''  name''

2,双引号

1)一般来说,字符串中的双引号仅仅被当作一个普通字符进行处理。

此时,双引号不需要成对出现:

Select 'hh24"小时""mi""分"""ss"秒"' Results From Dual;
Output:hh24"小时""mi""分"""ss"秒"

2)当出现在to_char的格式字符串中时,双引号有特殊的作用,就是将非法的格式符包装起来,避免出现ORA-01821: date format not recognized错误。

也就是说,去掉双引号和其包含的字符后,剩下的应该是一个合法的格式串。

to_char在处理格式字符串时,会忽略双引号:

Select To_Char(Sysdate, 'hh24"小时"mi"分"ss"秒"') As "当前时间/时分秒" From Dual;

Output:09小时05分08秒 --别名中也有此应用

格式串为'hh24"小时"mi"分"ss"秒"';

去掉双引号部分后,剩下的是'hh24miss',是一个合法的格式串。

不过即使真不知道双引号的这个用法,也可以这样来处理,虽然麻烦一点:

Select To_Char(Sysdate, 'hh24') || '小时' || To_Char(Sysdate, 'mi') || '分' || To_Char(Sysdate, 'ss') || '秒' As Result From Dual;

Output:09小时05分08秒

3,&(and符号)

用来识别/设置自定义变量,后需跟变量名;如需作为字符使用,需使用Chr(38),或者接连两个&&(转义自身)

Select Chr(38) a, 'Tom&&Jerry' b, 'Gun ''N Roses' c From Dual;
Output:&    Tom&Jerry    Gun 'N Roses

4, Escape(指定转义符)

指定一个非特殊符号为转义符,多用在通配符转义

Select Table_Name From User_Tables Where Table_Name Like 'TB=_%=_%' Escape '=';
Output:TB_STUDENT_SCORE--筛选以TB开头,中间有两个_的表名

感谢各位的阅读,以上就是“Oracle的转义字符有几种,用法是什么”的内容了,通过以上内容的阐述,相信大家对Oracle的转义字符有几种,用法是什么已经有了进一步的了解,如果想要了解更多相关的内容,欢迎关注群英网络,群英网络将为大家推送更多相关知识点的文章。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: oracle转义字符
相关信息推荐
2021-11-16 17:37:38 
摘要:这篇文章我们来了解MySQL索引的相关内容,下文介绍了索引是什么、索引定义、索引类型以及索引存储模型推演、底层数据结构为什么会选择B+树其缘由,对大家学习和理解MySQL索引有一定的帮助,有需要的朋友可以参考,接下来就跟随小编来了解看看吧!
2022-05-07 17:43:39 
摘要:在mysql中,可以利用alter语句配合“DROP PARTITION”来删除分区,“DROP PARTITION”的作用就是用于删除指定的分区,语法为“​ALTER TABLE '表名' DROP PARTITION '分区名' ”。
2022-08-13 17:52:21 
摘要:在mysql中,可以利用“alter table”语句和“ENGINE子句”来修改表类型,语法为“alter table 数据表名 ENGINE = 需要的表类型值;”。
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部