SqlServer中quotename用法与实例
2015-07-31 11:21
344 查看
语法
QUOTENAME ( 'character_string' [ , 'quote_character' ] )
参数
'character_string'
Unicode 字符数据构成的字符串。character_string 是 sysname 值。
'quote_character'
用作分隔符的单字符字符串。可以是单引号 (')、左方括号或右方括号 ([ ]) 或者英文双引号 (")。如果未指定
quote_character,则使用方括号。
实验
quotename函数看分隔符默认是[ ]
select quotename('df[]jls') 输出结果:[df[]]jls]
select quotename('df[]jls',']') 输出结果:[df[]]jls]
select quotename('df[]jls','') 输出结果:[df[]]jls]
select quotename('df[]jls','''') 输出结果:'df[]jls'
select quotename('df[]jls','}') 输出结果:{df[]jls}
select quotename('df{}jls','}') 输出结果:{df{}}jls}
请注意,字符串 df[]jls 中的右方括号有两个,用于指示转义符。
为什么输出结果是:[df[]]jls]呢?
[df[]]jls]
分解成
[]]中间的]是表示右边的]是原样输出也就是说]]就表示]
就跟''中的'要用''来表示一样
就是说和]]转义后得到 ] 和两个单引号转义成一个单引号是一个道理
实际用途
简单来说吧
比如你有一个表,名字叫 index
你有一个动态查询,参数是表名
declare @tbname varchar(256)
set @tbname='index'
---查这个表里的数据:
print('select * from '+@tbname)
exec('select * from '+@tbname)
--这样print出来的数据是
select * from index
因为index是字键字,肯定出错,加上括号就可以了:
select * from [index]
这便有了QUOTENAME,即:
print('select * from '+QUOTENAME(@tbname))
--结果:select * from [index]
exec('select * from '+QUOTENAME(@tbname))
或者说你的表名如果是abc 123话,直接查询一定会出错,而你由不得不把表名当做参数,这是你就可以使用quotename来进行转义
总结
quotename的主要作用就是当列名,表名,存储过程,等数据库对象需要一参数的形式传递是,为了确保参数的有效性你可以使用quotename来进行转义,当然也可以在两边加上‘[]’,但是这样写很明显会增加代码的复杂性
QUOTENAME ( 'character_string' [ , 'quote_character' ] )
参数
'character_string'
Unicode 字符数据构成的字符串。character_string 是 sysname 值。
'quote_character'
用作分隔符的单字符字符串。可以是单引号 (')、左方括号或右方括号 ([ ]) 或者英文双引号 (")。如果未指定
quote_character,则使用方括号。
实验
quotename函数看分隔符默认是[ ]
select quotename('df[]jls') 输出结果:[df[]]jls]
select quotename('df[]jls',']') 输出结果:[df[]]jls]
select quotename('df[]jls','') 输出结果:[df[]]jls]
select quotename('df[]jls','''') 输出结果:'df[]jls'
select quotename('df[]jls','}') 输出结果:{df[]jls}
select quotename('df{}jls','}') 输出结果:{df{}}jls}
请注意,字符串 df[]jls 中的右方括号有两个,用于指示转义符。
为什么输出结果是:[df[]]jls]呢?
[df[]]jls]
分解成
[]]中间的]是表示右边的]是原样输出也就是说]]就表示]
就跟''中的'要用''来表示一样
就是说和]]转义后得到 ] 和两个单引号转义成一个单引号是一个道理
实际用途
简单来说吧
比如你有一个表,名字叫 index
你有一个动态查询,参数是表名
declare @tbname varchar(256)
set @tbname='index'
---查这个表里的数据:
print('select * from '+@tbname)
exec('select * from '+@tbname)
--这样print出来的数据是
select * from index
因为index是字键字,肯定出错,加上括号就可以了:
select * from [index]
这便有了QUOTENAME,即:
print('select * from '+QUOTENAME(@tbname))
--结果:select * from [index]
exec('select * from '+QUOTENAME(@tbname))
或者说你的表名如果是abc 123话,直接查询一定会出错,而你由不得不把表名当做参数,这是你就可以使用quotename来进行转义
总结
quotename的主要作用就是当列名,表名,存储过程,等数据库对象需要一参数的形式传递是,为了确保参数的有效性你可以使用quotename来进行转义,当然也可以在两边加上‘[]’,但是这样写很明显会增加代码的复杂性
相关文章推荐
- Oracle数据库操作中锁表查询以及解锁和kill进程操作脚本
- Oracle 在RAC中使用DNS与DHCP
- mysql运维之---知识积累
- 让Redis在你的系统中发挥更大作用的几点建议
- 使用SQLServer2008R2进行缓存依赖通知需要注意事项
- 关于SQL2005安装配置的一些记录
- [MySQL] MySQL将多条记录的某个字段合并成一条记录
- Redis计数在新浪微博的应用
- java MongoDB查询(一)简单查询
- Redis在计数器场景上的应用
- oracle中的replace函数
- oracle中的replace函数
- centsOs(Linux) memcache 安装教程
- 结合listview实现sqlite3数据库的增删改查
- Android 数据库编程——使用litpal框架
- SQL server 中 SQL 单引号转义问题
- Redis经验谈
- Mysql常见水平分表方案
- Mongodb安装搭建Replica Set+Sharding集群
- 数据库相关 sql 语句