带括号、大括号、尖括号或重音符号的 QUOTENAME()

问题描述 投票:0回答:1

在阅读 QUOTENAME() 的文档时,我发现它支持各种分隔符:

  • 方括号 - [](默认)
  • 括号 - ()
  • 大括号 - {}
  • 尖括号 - <>
  • 单引号 - '
  • 双引号 - "
  • 严肃的口音 - `

除了将内容包装在开始和结束定界符中之外,QUOTENAME() 似乎会将所有与结束定界符匹配的包含字符加倍。例如:

QUOTENAME('matrix[2][3]')
产生
[matrix[2]][3]]]
QUOTENAME('cell(2)(3)', '(')
产生
(cell(2))(3)))

虽然我了解使用单引号、双引号和方括号来分隔标识符和文本值(主要是在构建动态 SQL 时),但我不确定其他形式可能有什么用途。

SQL Server 语法中是否有任何地方括号、大括号、尖括号或重音符号分隔的内容具有特殊含义? SQL 之外是否有其他形式可能有用的语言(XML、JSON 等)?这种情况必须将双重字符识别为转义。

这更多的是一个兴趣问题,而不是我试图解决的一个特定问题。

sql-server t-sql
1个回答
0
投票

从讨论来看,这些其他选项似乎是长期存在的未记录的行为,似乎在现实世界中几乎没有效用。

使用其中一些字符作为引号的其他语言或文件格式不会以

QUOTENAME()
的方式转义嵌入的分隔符。 (反斜杠转义似乎是其中的主要方法。)

当文档开源并由社区维护时,这些未记录的行为被添加到文档中。最好将未记录的行为保留为未记录或明确未定义。

© www.soinside.com 2019 - 2024. All rights reserved.