gpt4 book ai didi

sql-server - SQL Server 中用于别名的方括号和单引号有什么区别?

转载 作者:行者123 更新时间:2023-12-01 22:13:18 27 4
gpt4 key购买 nike

我看到有些人使用单引号给列名起别名,例如:

select orderID 'Order No' from orders

其他人使用方括号,例如:

select orderID [Order No] from orders

我倾向于使用方括号。有什么偏好/差异吗?

最佳答案

回答“是否有任何偏好/差异”的问题:

是的,有多少种意见就有多少种偏好,但要小心你采用了谁的偏好。

作为最佳实践,如果不需要任何额外的工作,建议编写可移植的 SQL。

对于您的特定示例,编写可移植查询同样容易......

select OrderId as "Order Id" from Orders

...因为它是编写一个不可移植的:

select OrderId as [Order Id] from Orders

当存在相同击键次数的等效可移植形式时,最好不要编写非标准 SQL。

用于转义的 [] 的激增是由于 SQL Server Management Studio 和 MS Access 查询构建器等工具造成的,它们会惰性地转义所有内容。对于在 SQL Server 中度过职业生涯的开发人员来说可能永远不会想到这一点,但多年来将 Access 和 SQL Server 应用程序移植到其他数据库平台时,括号已经造成了大量费用。对于引用所有内容的 Oracle 工具来说也是如此。未经培训的开发人员将 DDL 作为示例,然后在手写时继续使用相同的样式。在工具改进并且我们要求更好之前,这是一个很难打破的循环。在 Oracle 中,引用与混合大小写相结合会产生区分大小写的数据库。我见过人们引用数据库中每个标识符的项目,我感觉自己身处失落之地,开发人员在没有文档或最佳实践文章的岛屿上发展。

如果您从一开始就使用规范化的合法标识符(使用 OrderId 或 order_Id 而不是 [Order Id])编写 DDL,那么您不必担心可能需要转义字符的神秘关键字;数据库会通知当您使用保留字时。我们将应用程序从一个版本的 SQL Server 升级到另一个版本时,由于保留字而导致任何损坏的次数我可以用一根手指来数。

这常常是激烈争论的话题,所以如果你换个角度思考:

C# 程序员不会使用 @ 转义所有变量,尽管这样做是合法的。这会被认为是一种奇怪的做法,并且会成为 StackOverflow 上 mock 的对象。转义应该针对边缘情况。但是,编写符合 C# 标识符的开发人员并不介意转义 SQL 中的每个标识符,编写极其丑陋、不可移植的 SQL“代码”。作为一名顾问,我遇到过不止一位 SQL Server 程序员,他们真诚地认为 [] 是必需的语法。我不怪开发商;我责怪工具。

关于sql-server - SQL Server 中用于别名的方括号和单引号有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19657101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com