SQL语句中&、单引号等特殊符号的处理
今天遇到一个insert语句,在SQL Tools(链接Oracle数据库)插入的某列值为“Computer Hardware & Software>>CPU",这样执行会有问题,因为"&"是一个特殊符号。 符号(&) 在Oracle里有特殊含义,是一个宏变量标识符;在Oracle中,& 是从需要外部输入输入的变量。PS:MySqL中可以直接用"P&G"这样的字符串,故不存在本文所说的问题。要想插入带有&符号的列, 需要用如下的方法(当然,用PL/SQL Developer的for update语句也是可的,但我一般不用此工具)。
如下SQL语句就不能正确运行:
select 'Alibaba&Taobao' from dual;
处理方法:
用Oracle的字符串处理函数chr处理。chr(38)表示 &符号
如:select chr(38) from dual;
结果:&
select 'Alibaba'||chr(38)||'Taobao' from dual;
结果:Alibaba&Taobao
其他不能处理的特殊符合,也用类似的方式处理。如果不知道该特殊符号的ascii值,可以调用ascii函数处理,
如:select ascii('&') from dual;
结果:38
再附一个单引号(')的例子(I'm OK):
1. SELECT 'I' || '''m OK' from dual;
2. SELECT 'I''m OK' from dual;
3. SELECT 'I'||Chr(39)||'m OK' FROM dual;
1、2两个都是转义字符(只是用不用连接符||的区别),第3中是一个字符替换。
PS:我用字符替换来弄and符号(&)就没有成功了。
当然,也看到网上有人提出了“Set define OFF;”和“Select 'Tom' || '&' || 'Jerry' from dual;”的方法来解决,不过我试了一下,并没有成功。
案例:
create view bnm as
select ROW_NUMBER() OVER (ORDER BY tf_CategoryName desc) XuHao,tf_CategoryName tf_Name,sum(Tr_Count) Tr_Count from tb_FaultCategory a
left join
(select TR_ELECTRICALCATEGORYID ,COUNT(*) Tr_Count from TB_REPAIRSBASEINFO a1
where tr_RepareResult!='' group by TR_ELECTRICALCATEGORYID) b on a.fid=b.TR_ELECTRICALCATEGORYID group by tf_CategoryName go
declare @s varchar()
select @s=ISNULL(@s+',','')+''''+tf_Name+'''=sum(case when tf_Name='''+tf_Name+''' then Tr_Count else 0 end)'
+ ',cast(sum( case when tf_Name='''+tf_Name+''' then Tr_Count else 0 end)*100/sum(Tr_Count) as varchar(20))+''%'' as ''' +'报修率'''
from bnm group by tf_Name
print @s
exec('select '+@s +' from bnm')
SQL语句中&、单引号等特殊符号的处理的更多相关文章
- sql语句中包含引号处理方法
1. 背景 在使用Python脚本向数据库导入日志文件时候,突然报错. 2. 解决思路 查看messages文件,发现有一条语句里包含单引号. 查看sql语句,是使用单引号标注str类型. 3. 得出 ...
- SQL语句中的单引号处理以及模糊查询
为了防止程序SQL语句错误以及SQL注入,单引号必须经过处理.有2种办法: 1.使用参数,比如SELECT * FROM yourTable WHERE name = @name; 在C#中使用Sql ...
- sql语句中的注释符号
sql语句中的注释符号 mysql # 到该行结束.-- 到该行结束 以及 的注释方格:mysql> SELECT 1+1; # 这个注释直到该行结束mysql> SELE ...
- SQL 关于有单引号数据更新的问题
要把sql语句中包含有单引号的符号加入到数据库中的做法 )),''','123.com') 很简单就是加入id=''123'' 0'0就可以写成'0''0'
- MyBatis Sql语句中的转义字符
1.在xml的sql语句中,不能直接用大于号.小于号要用转义字符 如果用小于号会报错误如下: org.apache.ibatis.builder.BuilderException: Error cre ...
- 在sql语句中添加php变量
在sql语句中使用{}将php变量扩起来,php就会解析{}中的内容. //案件统计 function getCount($dsql,$tableName,$year){ //诉讼案件总数,总金额 $ ...
- (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法
总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法 总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中 ...
- 总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法
总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法 日期:2005年6月1日 作者:seasky212 总结一下SQL语句中引号(').quoted ...
- (转)SQL语句中的N'xxxx'是什么意思
SQL语句中的N'xxxx'是什么意思 我们在一些sql存储过程,触发器等中经常会见到类似 N'xxxx' 是什么意思? 例如:if exists (select * from dbo.sysobje ...
- (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法
总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法以及SQL语句中日期格式的表示(#).('')在Delphi中进行字符变量连接相加时单引号用('' ...
随机推荐
- Codeigniter CRUD生成工具
Codeigniter CRUD生成工具 http://crudigniter.com/
- php高并发状态下文件的读写
php高并发状态下文件的读写 背景 1.对于PV不高或者说并发数不是很大的应用,不用考虑这些,一般的文件操作方法完全没有问题 2.如果并发高,在我们对文件进行读写操作时,很有可能多个进程对进一文件 ...
- 前端文摘:Web 开发模式演变历史和趋势
今天的<前端文摘>给大家分享一篇玉伯的文章.文章详细介绍了 Web 开发的四种常用模式以及未来可能成为流行趋势的 Node 全栈开发模式,相信你看了以后一定会有收获. 您可能感兴趣的相关文 ...
- Android如何通过shareduserid获取系统权限
[原文] android会为每个apk进程分配一个单独的空间(比如只能访问/data/data/自己包名下面的文件),一般情况下apk之间是禁止相互访问数据的.通过Shared User id,拥有同 ...
- Python requests模块学习笔记
目录 Requests模块说明 Requests模块安装 Requests模块简单入门 Requests示例 参考文档 1.Requests模块说明 Requests 是使用 Apache2 Li ...
- 中兴F412光猫超级密码破解、破解用户限制、关闭远程控制、恢复路由器拨号
不少家庭都改了光纤入户,那肯定少不了光猫的吧.今天以中兴F412光猫为例介绍下此型号光猫超级密码的破解方法.一.F412超级密码破解方法1.运行CMD,输入telnet 192.168.1.1: 2. ...
- js 十分精确身份证验证
checkIdcard:function (idcard) { // 1 "验证通过!", 0 //身份证号码校验错误 var Errors = new Array( " ...
- App软件开发的完整在线流程(一看就懂)
App软件开发其实并不复杂,完整的在线App开发不过9个步骤,一看就明白到底是怎么回事. 第一步:需求评估 在App项目正式启动前,客户应该对自己的需求进行评估,确认项目的开发周期和成本.登录APIC ...
- App Store有哪些原因会影响app应用上架呢?(分享)
App Store对于应用上架的审核是非常严格的,很可能一个没有注意到的细节,或者一个你根本没想想到的原因就会导致你的应用上架失败.而排除这些无可避免的错误以外,还有一些导致应用上架失败的原因,非常常 ...
- 微信的redirect_uri参数错误原因分析
我们可以根据微信的开发者文档 http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html 网页授权获取用户验证这一章来 ...