SQL双引号和单引号同时存在的时候该如何转义呢? 比如这一句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL双引号和单引号同时存在的时候该如何转义呢? 比如这一句相关的知识,希望对你有一定的参考价值。

select DISTINCT (DeviceNo) from RemoteIndex where Model = "14" CITTA' MERCATO" 要从RemoteIndex表内,提取Model名为14" CITTA' MERCATO的条目的DeviceNo提示出错. select DISTINCT (DeviceNo) from RemoteIndex where Model = "14" CITTA' MERCATO"

参考技术A 这个转义的办法有点不好理解,就是用单引号转义单引号,比如''(这是两个单引号),不过很多时候是'''(三个单引号
一起写
),不过不要怕麻烦,最多我见过一次写了五个单引号的
参考技术B 你用的是什么数据库?
sqlserver里面用的是单引号,
双引号对他来说就是个普通字符,
如果要转义出一个单引号的话,连着写两个单引号就行了

存储过程中执行sql语句时如何转义双引号?

我的sqlserver版本2008 我想实现的效果是 将查出来的数据每个表的每个列中的数据前后都去掉双引号,
因为我的列数据都是这个样子。如下示例
=====================================================
id | name |
“f325sd” “asdfsdga”
“f3234d” “asd45dga”
=====================================================
而在最后这个sql中的双引号一直有问题,无法转义。。请大家提供一个好的解决方案
如果对于去掉数据中前后双引号有更好的办法还请不吝赐教

双引号不用转,如果里面有单引号,那就在前面再加一个单引号
如:select replace('"dfdf''df"','"','')
用全角的演示一下 select replace( ‘“abc ’’ de ”’,‘“”’,‘’)追问

你这种写法是没问题的,但是我这是在存储过程中执行的,就会报错,对于第二个参数中不能填写双引号,否则颜色你看也不对。

追答

那是因为你单引号没转义,应该是
@columnname+',''"'','''')'
最外层单引号表示括起来的是串,而串里若有单引号,需要在前面再加一个单引号进行转义
譬如我前面那个select,变成动态的就是
exec('select replace(''"dfdfdf"'',''"'','''')')

参考技术A 你好!
exec('update '+@tableName+' set '+@columnName+' = replace('+@columnName+',''"'','''')')嵌套拼接字符中的单引号处理很麻烦的
仅代表个人观点,不喜勿喷,谢谢。
参考技术B exec('update '+@tableName+' set '+@columnName+' = replace('+@columnName+',''"'','''')')

嵌套拼接字符中的单引号处理很麻烦的

参考技术C 改成这样试试:
exec('update '+@tableName+' set '+@columnName+' = replace('+@columnName+',''"'','''')')追问

提示为字符串 ‘)’ 后的引号不完整 不行 编译正常 无法执行

追答

可能是你没复制完整的原因,如果只复制了下面这部分,就会报出你遇到的问题
exec('update '+@tableName+' set '+@columnName+' = replace('+@columnName+',''"'','''')

以上是关于SQL双引号和单引号同时存在的时候该如何转义呢? 比如这一句的主要内容,如果未能解决你的问题,请参考以下文章

在 Xpath 中同时转义双引号和单引号

Javascript - 如何在 Kendo 模板上转义双引号和单引号

Ansible 转义双引号和单引号

在mysql中插入时保留双引号和单引号以及转义字符

模糊查询中含有单引号

Oracle中的单引号怎么转义