请教quotename函数的理解,我已经看了很多帮助,储如以下示例
QUOTENAME (Transact-SQL)返回带有分隔符的 Unicode 字符串,分隔符的加入可使输入的字符串成为有效的 Microsoft SQL Server 2005 分隔标识符。 Transact-SQL 语法约定 语法 QUOTENAME ( 'character_string' [ , 'quote_character' ] ) 参数
'character_string'Unicode 字符数据构成的字符串。character_string 是 sysname 值。'quote_character'用作分隔符的单字符字符串。可以是单引号 (')、左方括号或右方括号 ([ ]) 或者英文双引号 (")。如果未指定 quote_character,则使用方括号。 返回类型
nvarchar(258) 示例
以下示例接受字符串 abc[]def 并使用 [ 和 ] 字符来创建有效的 SQL Server 分隔标识符。 复制代码
SELECT QUOTENAME('abc[]def')下面是结果集:
可是我还是不能理解 ,能不能请高手讲得通俗点.
QUOTENAME (Transact-SQL)返回带有分隔符的 Unicode 字符串,分隔符的加入可使输入的字符串成为有效的 Microsoft SQL Server 2005 分隔标识符。 Transact-SQL 语法约定 语法 QUOTENAME ( 'character_string' [ , 'quote_character' ] ) 参数
'character_string'Unicode 字符数据构成的字符串。character_string 是 sysname 值。'quote_character'用作分隔符的单字符字符串。可以是单引号 (')、左方括号或右方括号 ([ ]) 或者英文双引号 (")。如果未指定 quote_character,则使用方括号。 返回类型
nvarchar(258) 示例
以下示例接受字符串 abc[]def 并使用 [ 和 ] 字符来创建有效的 SQL Server 分隔标识符。 复制代码
SELECT QUOTENAME('abc[]def')下面是结果集:
可是我还是不能理解 ,能不能请高手讲得通俗点.
解决方案 »
- 请教怎样执行变量里的表达式?
- 郁闷,SQLServer服务启动不了!
- 关于数据库排序的问题
- mssql server 2000安装问题!
- Access Database有一字段是自动编号类型的, 转到SQL Server上有问题吗?
- 烦人的数据库,TMD,花了我这个外行的几天时间了,,,
- 文本数据导入及表的设计的问题?
- 一个很菜的问题,请各位大侠帮帮我
- 关于先进先出'成本算法',各位高人多多指教。
- 如何查询SQL SERVER中连接池的最大连接数
- 自增长字段的数据类型用 int 还是 bigint 好,数据日增长量平均在 500 条以内。
- 在笔记本电脑安装SQL出现错误: command line option syntax error!type command /? for help
create table abc 123(...)
那么中间含有空格,它不是符合规则的。你会写做 create table [abc 123](....)
即以[]来定界标识符。
quotename将 字串成为有效的标识符。它有什么用呢? 我举个例子。你有个表名字叫做 aa[]bb当某些应用动态语句查询时 你如何写呢
exec('select * from aa[]bb')
?set @sql='select * from ' + quotename('aa[]bb')
exec(@sql)当然你也可以直接写出转义的写法select * from [aa[]]bb]也就是说,quotename 使函数中的输入成为一个有效的标识符。
比如上例中 aa[]bb 不是一个有效的标识符。
示例
以下示例接受字符串 abc[]def 并使用 [ 和 ] 字符来创建有效的 SQL Server 分隔标识符。 复制代码
SELECT QUOTENAME('abc[]def')下面是结果集: 复制代码
[abc[]]def](1 row(s) affected)请注意,字符串 abc[]def 中的右方括号有两个,用于指示转义符。我不明白为什么SELECT QUOTENAME('abc[]def') 结果集 是 [abc[]]def]为什么中间多了一个]符号呢
结果应该就是
[abc[]def]
是不是MSND解答错误呢
quotename('aa') 生成的有效的标识符为 [aa]
quotename('aa','') 生成的有效的标识符为 [aa]
quotename('aa','''') 生成的有效的标识符为 'aa'
简单来说吧
比如你有一个表,名字叫 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))