`

oralce里面的单引号转义

 
阅读更多

在oracle中,字符串是由单引号引用的,而转义也是由单引号来完成的,这对于许多初学者而言是件头疼的事情,尤其是开始学习动态SQL的人。如果就单纯的单引号而言,很容易让人理解:它总是找与它最近的一个单引号配对。也就是所谓的就近原则;但是在单引号充当转义角色的时候,情况就显得有些让人费解了。(为方便起见,红色单引号都是充当转义角色)
1、从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号(哪怕只有一个)。
SQL> select '''' from dual;

''''
--
'
为了证实结果是被第二个单引号转义的第三个单引号(既:select '''' from dual;),我们做如下两个测试:
SQL> select ''' from dual;
ERROR:
ORA-01756: 引号内的字符串没有正确结束

相信大家对这样的错误不陌生吧
SQL> select 'sdlf from dual;
ERROR:
ORA-01756: 引号内的字符串没有正确结束

也就是说,当第二个单引号充当转义角色,第三个单引号被转义。

那么 select '' ' from dual; 自然就缺少与第一个单引号匹配的单引号了,出现了孤立的单引号
下面的两个实验就更加支持了上面的结论。
SQL> select ' '' ' from dual;

''''
------
'

SQL> select '' '' from dual;
select '' '' from dual
*
ERROR 位于第 1 行:
ORA-00923: 未找到预期 FROM 关键字

对于第一个:select ' '' ' from dual;
对于第二个:不存在转义。

上面的这两个实验其实也是单引号转义与非转义的一个性质:转义是密集的,也就是说,如果单引号出现在转义的位置上,而该单引号后面紧跟(紧跟的定义为:两个单引号之间是零距离的)的不是单引号,这个时候单引号就不在充当转义的角色,而是与它前面的配对。

2、连接符‘||’导致了新一轮的转义:连接符号‘||’左右的单引号没有任何的关系,除非‘||’是作为字符串的一部分(这在动态SQL中很常见)。
SQL> select 'exit'||'''' from dual;

'EXIT'||''
----------
exit'

SQL> select 'exit''''' from dual;

'EXIT'''''
------------
exit''
对于第一个,前两个单引号配对,后面四个单引号按照上面的第一条原则分配,既:select 'exit'||'''' from dual;
对于第二个,由于第二个单引号后面存在单引号,所以就不与第一个配对,而是充当了转义的角色。既:select 'exit''''' from dual;

有了上面的两条原则,我们就可以从容的面对复杂的动态SQL了

分享到:
评论

相关推荐

    浅谈oracle中单引号转义

    ORACLE 单引号转义: 在ORACLE中,单引号有两个作用:   1:字符串是由单引号引用   2:转义。  单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解  1.从第二个单引号开始被视为...

    Oracle中转义字符的详细介绍

    在Oracle数据库中,转义字符是用来表示特殊含义的字符,特别是在字符串中,当需要在文本中插入单引号(')或者其他特殊字符时,转义字符就显得尤为重要。Oracle的转义字符是单引号自身,也就是说,如果你要在字符串...

    oracle插入字符串数据时字符串中有'单引号问题

    总的来说,处理Oracle数据库中字符串含有单引号的问题,主要通过转义单引号或者使用参数化查询来解决。在编写SQL语句时,应当注意这类可能导致语法错误的特殊字符,并采取相应的预防措施,确保数据的正确插入和系统...

    Oracle字符串怎样连接单引号

    以下是一些关于如何在Oracle中正确连接和转义单引号的知识点: 1. **字符串识别标识**:在Oracle SQL中,单引号(')用于标识字符串的开始和结束。例如,`'aaa'` 是一个包含三个字符'a'的字符串。 2. **单引号转译...

    精彩编程与编程技巧-如何在表中保存单引号?...

    3. **字符串转义**:在某些情况下,为了确保SQL语句的正确性,需要对字符串中的特殊字符进行转义处理,如将单引号转为两个连续的单引号。 4. **数据库驱动**:用于连接应用程序和数据库之间的软件层,它负责转换...

    sql语句中单引号嵌套问题(一定要避免直接嵌套)

    在大多数SQL方言中,包括MySQL、SQL Server、Oracle等,如果你的字符串内容里有一个单引号,你需要在它前面再添加一个单引号来进行转义。例如,如果你要搜索包含“标准间”的ROOMTYPE,正确的写法应该是: ```sql @...

    SQL中的转义字符

    对于单引号 `'` 的转义,Oracle中仍然只接受双单引号 `''` 的方式,而MySQL提供了两种选择:双单引号 `''` 或者反斜杠加单引号 `'\''`,这在编写跨数据库兼容的SQL语句时需要特别注意。 总的来说,了解SQL中的转义...

    富士通内部培训ORACLE资料

    若需查询包含这些字符的数据,需进行转义,例如在字符串中使用两个单引号''来表示一个单引号。 2. **插入单引号**:在插入数据时,如果字段值包含单引号,应使用两个单引号 '' 来表示一个单引号。例如,`INSERT ...

    mysql和Oracle命令的区别

    在 Oracle 中,如果字符串中包含单引号,需要将单引号加倍以正确转义。 3. 翻页查询(LIMIT 和 OFFSET 对应 ROWNUM): MySQL 使用 `LIMIT` 关键字结合 `OFFSET` 实现分页查询,例如 `LIMIT start, limit_size`。...

    mysql和oracle区别.docx

    在 Oracle 中,如果字符串内部含有单引号,需要使用两个单引号来转义。 4. **分页查询**: MySQL 使用 LIMIT 子句轻松实现分页,如 `LIMIT 开始位置, 记录个数`。Oracle 的分页查询相对复杂,通常需要使用子查询...

    oracle学习必备资料

    插入单引号时,可以使用ASCII码`chr(39)`或者两个单引号`''`来表示一个单引号。 2. **事务一致性**:Oracle提供了不同的事务隔离级别,如`READ COMMITTED`(语句级一致性)和`SERIALIZABLE`(事务级一致性)。`READ...

    oracle常用问题解答

    **解答**: 在Oracle中,如果要在字符串中包含单引号,可以通过在两个单引号之间插入另一个单引号来实现。 - **示例**: 假设需要将字符串"John's"插入到某个字段中: ```sql INSERT INTO table_name (column_name)...

    mysql转换到oracle数据库

    - 在Oracle中,对于字符串中出现的单引号,需要进行转义处理,例如使用`Translate`函数替换所有的`\'`为`''`。 通过以上详细步骤和技术要点,我们可以有效地将MySQL数据库中的数据及其相关的应用程序迁移至Oracle...

    oracle数据库常用操作指令

    针对可能存在的单引号问题,需要将单引号替换成两个单引号进行转义。对于CLOB类型的大文本数据,可以使用DBMS_LOB程序包进行处理。 DELETE语句用于删除表中符合条件的记录。需要注意的是,DELETE操作并不会立即释放...

    oracle 讲义

    - 字符串连接时,若包含单引号,需用两个单引号替换,如`select ename || 'abcd'`。 - 双引号保留字段名的原始大小写,否则Oracle默认转为大写。 5. **DISTINCT关键字**: - `select distinct`用于去除结果集中...

    Oracle的SQL语法大全

    字符串需用单引号包围,特殊字符如单引号需转义。日期字段可用`SYSDATE`表示当前时间,或通过`TO_DATE()`函数将字符串转换为日期格式。 2. **DELETE**: 删除表中的记录。基本语法是:`DELETE FROM 表名 WHERE 条件...

    Oracle SQL

    在使用INSERT语句时,字符串类型的字段值必须使用单引号括起来,并且如果值中包含单引号,则需要将单引号进行转义,即使用两个单引号来代替。日期字段的值可以使用系统时间SYSDATE或者TO_DATE函数进行转换,以满足...

Global site tag (gtag.js) - Google Analytics