示例
以下示例接受字符串 abc[]def 并使用 [ 和 ] 字符来创建有效的 SQL Server 分隔标识符。 复制代码 
SELECT QUOTENAME('abc[]def')
 下面是结果集:  复制代码 
[abc[]]def](1 row(s) affected)
 请注意,字符串 abc[]def 中的右方括号有两个,用于指示转义符。我的疑惑是:为什么中间多了一个]符号呢 结果应该就是 [abc[]def] ,不太懂哦,麻烦各位解答下,是不是小弟哪个基础知识没学好....

解决方案 »

  1.   

    [abc[]]def] 
    分解成
    []]中间的]是表示右边的]是原样输出也就是说]]就表示]
    就跟''中的'要用''来表示一样
      

  2.   


    SELECT QUOTENAME('ab]cde]f','}') 
    --{ab]cde}}f}
      

  3.   


    我问的不是这个。而且你的输出结果也是错的,应该是 --{ab]cde]f}
      

  4.   


    -- 这样应该清楚一点。第一个 ] 用于转义。
    select QUOTENAME('abc''def','''')
    -- 'abc''def'
    select QUOTENAME('abc]def')
    -- [abc]]def]
    select QUOTENAME('abc}def','{}')
    -- {abc}}def}
      

  5.   


    create table tab([i[]]d] int);
    go
    select name from sys.columns where object_id=object_id('tab');
    /* i[]d */
      

  6.   

    最好就用
    SELECT QUOTENAME('abc[]def','(')
    SELECT QUOTENAME('abc[]def','{')
    轉義字符也不太懂 學習
      

  7.   

    哦,我明白了,SELECT QUOTENAME('abc[]def') ,quotename函数默认分隔符是[ ] 
    所以在给quotename('abc[]def')需要对abc后的[]进行转义,如果quotename('abc[]def','{')
    也就是设置了分隔符为{就不会发生转义,该转义取决于分隔符.
      

  8.   

    简单的说假设你要在分隔符在[ ]里面使用[]那么就必须对综括号里面的]进行转义:]]所以结果为:[abc[]]def],同理要在{}里面使用{}那么必须对}进行转义:}}那么结果为:{abc{}}def}
    select quotename('abc[]def') --默认是分隔符:[ ]
    --[abc[]]def]
    select quotename('abc{}def','}')
    --{abc{}}def}
      

  9.   

    SELECT QUOTENAME('ab]cde]f',']') 
    --[ab]]cde]]f]
    SELECT QUOTENAME('ab]cde]f')
    --[ab]]cde]]f]"]"为默认分界符