示例
以下示例接受字符串 abc[]def 并使用 [ 和 ] 字符来创建有效的 SQL Server 分隔标识符。 复制代码
SELECT QUOTENAME('abc[]def')
下面是结果集: 复制代码
[abc[]]def](1 row(s) affected)
请注意,字符串 abc[]def 中的右方括号有两个,用于指示转义符。我的疑惑是:为什么中间多了一个]符号呢 结果应该就是 [abc[]def] ,不太懂哦,麻烦各位解答下,是不是小弟哪个基础知识没学好....
以下示例接受字符串 abc[]def 并使用 [ 和 ] 字符来创建有效的 SQL Server 分隔标识符。 复制代码
SELECT QUOTENAME('abc[]def')
下面是结果集: 复制代码
[abc[]]def](1 row(s) affected)
请注意,字符串 abc[]def 中的右方括号有两个,用于指示转义符。我的疑惑是:为什么中间多了一个]符号呢 结果应该就是 [abc[]def] ,不太懂哦,麻烦各位解答下,是不是小弟哪个基础知识没学好....
分解成
[]]中间的]是表示右边的]是原样输出也就是说]]就表示]
就跟''中的'要用''来表示一样
SELECT QUOTENAME('ab]cde]f','}')
--{ab]cde}}f}
我问的不是这个。而且你的输出结果也是错的,应该是 --{ab]cde]f}
-- 这样应该清楚一点。第一个 ] 用于转义。
select QUOTENAME('abc''def','''')
-- 'abc''def'
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','(')
SELECT QUOTENAME('abc[]def','{')
轉義字符也不太懂 學習
所以在给quotename('abc[]def')需要对abc后的[]进行转义,如果quotename('abc[]def','{')
也就是设置了分隔符为{就不会发生转义,该转义取决于分隔符.
select quotename('abc[]def') --默认是分隔符:[ ]
--[abc[]]def]
select quotename('abc{}def','}')
--{abc{}}def}
--[ab]]cde]]f]
SELECT QUOTENAME('ab]cde]f')
--[ab]]cde]]f]"]"为默认分界符