了解 Oracle 中单引号与双引号的用法,一篇文章教会你!

news2025/1/16 16:52:49

无论测试或者开发,对数据库的增删改查都是家常便饭。但有些小知识是经常被忽略,却又不能不去了解的,例如单引号和双引号的用法和区别,看完这一篇,你肯定会有收获。

首先我们要区别一个概念,即单引号(‘)和双引号(“)和两个单引号(‘’),在PL/SQL中明显是不同的,单引号就是单引号,双引号就是双引号。那么我们来看下单引号和双引号在Oracle的世界中有什么区别。

Oracle中的单引号

在Oracle中,单引号主要有两种用途:

一是引用字符串

二是转义

让我们直接从问题出发,反向论证。

Q1 如何打印出单引号?

我们知道单引号经常用来标识内容为字符串(引用),但是怎么来标识自己呢?如果直接这样写,那么就会报错。

select ''' from dual;

> ORA-01756: 引号内的字符串没有正确结束

因此,这边用到了单引号的转义用法,即用单引号转义自己:’’

没错,就是写成两个单引号,转义类似语言中的反斜杠(\),下面SQL中的绿色部分就是转义的位置。

select''''fromdual;

Q2如果转义单引号和字符串的引号连续,如何选择优先级?

如果转义字符前后还有字符串,那么该怎么判断其优先级呢,是先表示字符串的,还是先转义。

select'name''is'fromdual;

例如上面这个SQL,两个字符串连在一起,那么是输出拼接后的nameis还是 name’is?其实这边看似两个字符串,其实中间的两个单引号是转义,所以结果是 name’is. select'name''is'fromdual;#中间引号为转义的单引号

那有没有连续转义的场景呢,例如下面这个sql,就是连续转义。

select'name'''''fromdual;

如上,sql中进行了连续两个转义,因此结果是name''

Q3单引号遇到||拼接还可以继续转义吗?

我们都知道,在sql语句中,如果想要多个字段拼接,可以用双竖线||来实现。而||两边的字符串是没有任何关联的,互不干扰,即使是转义字符也是一样的,可以看到下面这个例子。

select'I'||''''||'amJack'fromdual;

语句中由两个||将字符串分成了3部分,且每段都是互相独立的。那么中间4个单引号是如何显示的?其实是中间两个单引号是转义,前后两个单引号只是字符串的引用而已(4个单引号只为了显示1个单引号),因此结果就是:I'amJack

Q4单引号的转义太复杂,易混乱,有没有简单的标识方法?

对于简单的sql语句中含有个别单引号还可以接受,但是如果sql语句中包含大量的单引号,岂不是很混乱,要崩溃?

select'insertintobp_data_router(ACCESS_TYPE,ACCESS_CODE,BE_ID,EFF_DATE,CUST_ID_PREFIX,EXP_DATE,STATUS,CUST_ID)values('||''||t.access_type||','''||t.access_code||''','||t.be_id||',to_date('''||to_char(t.eff_date,'yyyymmddhh24miss')||''','||'''yyyymmddhh24miss''),'||t.cust_id_prefix||','||'to_date('''||to_char(t.exp_date,'yyyymmddhh24miss')||''','||'''yyyymmddhh24miss''),'''||t.status||''','||t.cust_id||');'frombp_data_routertwhereto_char(t.eff_date,'yyyymmddhh24miss')>'20170119004300'andt.eff_date<sysdate

对于类似复杂场景,为了避免出错,建议使用ASCII码来表示:chr(39)

selectchr(39)fromdual;#’

Oracle中的双引号

一般来说,双引号没有单引号那么复杂,它就是一个普通的字符。

select'"'fromdual;

但是,当出现在to_char的格式字符串中时,双引号有特殊的作用,就是将非法的格式符包装起来,避免出现ORA-01821:dateformatnotrecognized错误。?也就是说,去掉双引号和其包含的字符后,剩下的应该是一个合法的格式串。此时,to_char在处理格式字符串时,会忽略双引号。

selectto_char(sysdate,'hh24"小时"mi"分"ss"秒"')resultsfromdual;

如上这个写法,“小时”这部分是不能带入到语言内部运算的,程序会默认忽略这部分字符,但是输出的时候,又把它们加上,这就是双引号的作用。

#忽略之后执行这样的语句:

selectto_char(sysdate,'hh24miss')resultsfromdual;

#输出结果再加上双引号的格式:

>>22小时50分59秒

总结:

综上所述,Oracle中的单引号可以充当转义字符,且优先级较高,而双引号只是个普通字符,只有在to_char中才能发挥特别作用。

最后:

可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。

这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117289.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker应用部署示例

Docker 应用部署 一、部署MySQL 搜索mysql镜像 docker search mysql拉取mysql镜像 docker pull mysql:5.6创建容器&#xff0c;设置端口映射、目录映射 # 在/root目录下创建mysql目录用于存储mysql数据信息 mkdir ~/mysql cd ~/mysqldocker run -id \ -p 3307:3306 \ --na…

如何通过文档管理控制合同管理

如何通过文档管理控制合同管理 如果您的公司处理的合同比以往任何时候都多&#xff0c;那么您并不孤单。这种指数级增长的原因包括日益增长的监管要求、供应链问题以及全球化带来的业务关系的复杂性。此外&#xff0c;员工更频繁地换工作&#xff0c;因此&#xff0c;需要管理更…

Unity实用小工具—以对象形式操作Sqlite

一、介绍 1.1、版本说明&#xff1a;使用的Unity版本为个人版2020.3.39&#xff0c;数据库为Sqlite&#xff08;一个轻量级跨平台数据库&#xff09;&#xff0c;Sqlite的查看管理工具可以在网上下载https://dbeaver.io/download/&#xff0c;可以直接保存下来使用。 1.2、数…

微服务(四)——统一网关

目录1. 概念2. 实现网关1. 实现流程2. 小结3. 断言工厂4. 过滤器工厂1. GatewayFilter2. GlobalFilter3. 过滤器的执行顺序5. 解决跨域问题1. 概念 网关的作用&#xff1a; 认证、鉴权服务路由、负载均衡请求限流 网关的实现&#xff1a; gateway 基于Spring5中提供的WebFlu…

linux 设置登录提示语

勿以恶小而为之&#xff0c;勿以善小而不为---- 刘备 /etc/motd 文件里面 保存的是 登录后提示语 vim /etc/motd可以放置自定义的 文字信息 -------------------- 每天都要加油努力噢&#xff0c;岳泽霖!!! -------------------登录之后&#xff0c;就会展示信息: 参考链接: …

【Linux】Linux命令行git的使用

前进才是唯一的方向 文章目录一、git是什么&#xff1f;二、gitee仓库创建1.新建仓库2.复制仓库链接3.克隆远端仓库到本地来三、git提交代码1.下载git2. 配置用户名和邮箱&#xff08;否则git commit无法正常使用&#xff09;3. git提交代码三板斧3.1 git add&#xff08;将代…

git merge合并开发分支到上线分支遇到的问题,提示 no new changes

git merge 后 push 到 Gerrit 失败&#xff0c;提示 no new changes 解决思路&#xff1a; 分析&#xff1a;no new changes 的意思&#xff0c;是说&#xff0c;这个合并&#xff0c;是个线性的合并。而合并的那些历史的 commit 节点&#xff0c;在 gerrit 上都已经评审过了&…

在Linux中安装ShowDoc

在Linux中&#xff0c;有两种方式安装ShowDoc。第一种是自动脚本安装&#xff0c;第二种是手动安装。官方推荐使用自动脚本安装ShowDoc。如果自动脚本安装ShowDoc失败&#xff0c;可以考虑手动安装ShowDoc。 自动脚本安装ShowDoc 自动脚本利用docker来安装运行环境&#xff0…

酒鬼私定,只是酒鬼酒一次破圈营销?

围坐红泥小火炉&#xff0c;煮酒谈今夕。 过去一年多时间&#xff0c;经历了业绩向上&#xff0c;股市向下的反差时期后&#xff0c;越来越多人意识到白酒行业已步入存量时代。 2022年前三季度&#xff0c;中国规模以上白酒行业实现总产量487.9万千升&#xff0c;同比减少2.5…

proxychains for Windows

proxychains for Windows背景介绍项目地址使用scoop安装proxychains for windows验证命令行能否调用proxychains配置代理使用为Windows终端配置proxy--适用于cmd为Windows终端配置proxy--适用于PowerShellpowershell配置变量背景介绍 有时候Windows下的一些命令行程序想要挂代…

正大国际期货:外盘德指期货交易应该怎么做?

作为一个期货交易者&#xff0c;想要在市场上生存下来&#xff0c;就必须针对各种可能性都有所准备。比如&#xff0c;如果你强烈看涨&#xff0c;就必须准备好应对市场打你个冷不防的可能。相反&#xff0c;如果你对眼前的涨势高度怀疑&#xff0c;也不能彻底排除上演一场黑天…

ElasticSearch安装和部署和整合springboot

因为项目每次用到&#xff0c;每次重新搭都踩坑&#xff0c;特此记录一些坑&#xff0c;防止花费大量时间在搭建和整合上面安装 准备好压缩包elasticsearch-6.2.4解压 在config文件夹下配置文件elasticsearch.yml&#xff0c;可更改自行喜欢的端口和配置账号密码安装中文分词器…

git笔记

coderwhy听课笔记 什么是集中式 分布式 集中式是将整个仓库放到服务器&#xff1b;分布式是每台电脑上都有对应的仓库&#xff0c;可以在本地提交&#xff0c;之后把本地的仓库同步到服务器的仓库里 git安装 除了能使用git命令&#xff0c;还安装了git bash,git GUI git ba…

mysql数据库有关教程

我们打开Navicat 我使用的是16版本的,我们选择连接,我们新建连接 这里会有菜单栏目,比如说常规,高级,数据,SSL,SSH HTTP 其他的我们先不看,后期有机会我会解释的,先看常规 连接名字,就是你可以自己命名一个名字,也可以不写,比如说连接名字 studentdemo1 主机默认是localhos…

NetInside网络攻击分析帮您轻松发现可疑主机

分析概要 分析概要从以下三点做介绍。 分析内容 NetInside网络流量分析设备采集的流量。 分析时间 报告分析时间范围为&#xff1a;2020-09-28 07:58:00-11:58:00&#xff0c;时长共计3小时。 分析目的 本报告主要分析目的&#xff1a;查找和定位存在可疑现象的主机、查…

SHELL脚本学习 --- 第二天作业

SHELL脚本学习 — 第二天作业 思路&#xff1a; 这四道题都有条件判断的过程&#xff0c;可以使用if&#xff0c;也可以使用与运算。 linux的shell脚本中&#xff0c;与运算前一个命令执行成功&#xff0c;则执行后一个命令&#xff0c;反之则不执行&#xff0c;因此可以起到类…

cdb.exe的利用

cdb.exe的利用 0x01 简介 cdb 是安装 windows debugging tools 时自带的一个命令行调试工具&#xff0c;由微软签发证书。 0x02 cdb.exe加载shellcode ​ cdb.exe是调试工具&#xff0c;可以用来调试指定进程&#xff0c;并且可以在指定进程里分配RWX属性内存并写入shellcod…

临近年底,如何提高软件项目开发效率和开发速度?

1、任务自动分配功能 提高开发效率 为了提高团队的整个任务分配效率&#xff0c;CoCode自主研发任务“自动规划”功能&#xff0c;会根据当前任务属性以及人员技能登记等信息&#xff0c;实现迭代计划的一键规划&#xff0c;为项目经理智能规划出最优的项目计划以及人员工作安排…

ROS1学习笔记:服务数据的定义与使用(ubuntu20.04)

参考B站古月居ROS入门21讲&#xff1a;服务数据的定义与使用 基于VMware Ubuntu 20.04 Noetic版本的环境 文章目录一、模型图二、创建功能包三、自定义服务数据3.1 在package.xml中添加功能包依赖3.2 在CmakeLists.txt中添加编译选项3.3 编译生成的C文件和Python库四、代码实现…

DSPE-PEG-NPC 二硬脂酰基磷脂酰乙醇胺-聚乙二醇-NPC ;功能聚乙二醇化试剂

DSPE-PEG-NPC 二硬脂酰基磷脂酰乙醇胺-聚乙二醇-NPC 名称&#xff1a;DSPE-PEG-NPC 中文名称&#xff1a;二硬脂酰基磷脂酰乙醇胺-聚乙二醇-NPC 英文&#xff1a;1,2-distearoyl-sn-glycero-3-phosphoethanolamine-N-(polyethylene glycol)-NPC 性状&#xff1a;PEG2000为白色…