quotename的用法.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
quotename的用法

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 @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 分隔符的 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 下面是结果集: [abc[]]def] 1 row s affected 请注意,字符串 abc[]def 中的右方括号有两个,用于指示转义符。 为什么输出结果是:[abc[]]def]呢? [abc[]]def] 分解成 []]中间的]是表示右边的]是原样输出也就是说]]就表示] 就跟中的要用来表示一样 就是说和]]转义后得到-- ] 和两个单引号转义成一个单引号是一个道理 quotename函数看分隔符是什么因为默认是[ ] ,如果用的是 作分界符,那么 SELECT QUOTENAME abc[]def 就不会发生转义了. select QUOTENAME abcdef, --分隔符是两个单引号 -- abcdef select QUOTENAME abc]def --分隔符是] -- [abc]]def] select QUOTENAME abc def, --分隔符是 -- abc def 示例: create table tab [i[]]d] int ; go select name from sys.columns where object_id object_id tab ; /* i[]d */ 也就是说:SELECT QUOTENAME abc[]def ,quotename函数默认分隔符是[ ] 所以在给quotename abc[]def 需要对abc后的[]进行转义,如果quotename abc[]def, 也就是设置了分隔符为 就不会发生转义,该转义取决于分隔符. 简单的说假设你要在

文档评论(0)

sb9185sb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档