【问题标题】:Why does SQL Server Management Studio generate code using square brackets?为什么 SQL Server Management Studio 使用方括号生成代码?
【发布时间】:2009-10-09 14:23:28
【问题描述】:

生成代码/脚本时,

  1. 为什么 SQL Server Management Studio 使用方括号而不是双引号生成代码?

    从 [表格] 中选择 [名称]

  2. 有没有办法(设置/注册表项)将其配置为使用双引号(标准)?

    从“表”中选择“名称”

这是非常适合 MSFT 的功能,因为他们的所有文档现在都标有双引号(请参阅 this

【问题讨论】:

  • 您说“双引号 [是](标准)”。这是 ANSI 标准吗?
  • 是的,是ANSI标准
  • “使用方括号 [ 和 ] 来分隔标识符不受 QUOTED_IDENTIFIER 设置的影响。”我认为 Sybase 的遗留问题及其行为是必要的原因。

标签: sql-server ssms


【解决方案1】:

为什么 sql-server (management studio) 使用方括号生成代码?

从 [表格] 中选择 [名称]

处理保留字或包含空格的名称。

方括号是包装标识符的原生方式。它们是不对称的,可以不匹配,而引号是对称的,应该匹配(或加倍以将它们包含在名称中):

CREATE TABLE [[test] (id INT)
CREATE TABLE ["test] (id INT)
DROP TABLE "[test"
DROP TABLE """test"

【讨论】:

  • 好点,我知道。我应该改变我的问题的措辞:我的意思是为什么是方括号而不是双引号。会修复的。
  • 虽然它只涵盖了我问题的一半,但我会接受答案,因为不对称确实是一个很好的论点。
【解决方案2】:

至少对我而言,您的链接解释了原因。括号不依赖于设置,但 " 的有效性取决于 QUOTED_IDENTIFIER 设置。

【讨论】:

    【解决方案3】:

    要回答您问题的另一半,在 SQL Server Management Studio 中有一个使用全部替换命令 (Ctrl+H) 的解决方法:

    • 查找内容:[\[\]]
    • 替换为:"
    • 勾选“使用:”并选择“正则表达式”
    • 按“全部替换”

    请记住,这也将替换您评论中出现的括号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-18
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多