SQL2005关于quotename的用法

首先,sqlserver里的标识符有一定的规则,比如  你 create table abc 123(...) 那么中间含有空格,它不是符合规则的。
你会写做 create table [abc 123](....) 即以[]来定界标识符。
quotename将 字串成为有效的标识符。
它有什么用呢? 我举个例子:

你有个表名字叫做 aa[]bb
当某些应用动态语句查询时 你如何写呢 exec('select * from aa[]bb') ?X
set @sql='select * from ' + quotename('aa[]bb') exec(@sql)
当然你也可以直接写出转义的写法
select * from [aa[]]bb]
也就是说,quotename 使函数中的输入成为一个有效的标识符。 比如上例中 aa[]bb 不是一个有效的标识符。

还有一点就是quotename函数有几种写法:   quotename('aa') 生成的有效的标识符为 [aa]   quotename('aa','') 生成的有效的标识符为 [aa]   quotename('aa','''') 生成的有效的标识符为 'aa'

 

解释2:

简单来说吧 比如你有一个表,名字叫 index 你有一个动态查询,参数是表名 declare@tbnamevarchar(256) set@tbname='index'---查这个表里的数据:print('select * from '+@tbname) exec('select * from '+@tbname)
--这样print出来的数据是select*fromindex
因为index是字键字,肯定出错,加上括号就可以了:
select*from[index]
这便有了QUOTENAME,即:
print('select * from '+QUOTENAME(@tbname)) --结果:select * from [index]exec('select * from '+QUOTENAME(@tbname))

 

 

返回带有分隔符的 Unicode 字符串,分隔符的加入可使输入的字符串成为有效的 Microsoft SQL Server 2005 分隔标识符。

posted @ 2013-03-19 14:34  .net刚入门  阅读(135)  评论(0编辑  收藏  举报