quotename的用法.docVIP

  • 3
  • 0
  • 约2.52千字
  • 约 4页
  • 2017-06-08 发布于河南
  • 举报
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)

1亿VIP精品文档

相关文档