Sql-Server

在手寫程式碼中使用 SQL Server 的括號表示法是否有意義?

  • May 13, 2020

[]當程式碼生成器使用新的 Microsoft 括號表示法 ( ) 為幾乎所有內容生成輸出時,它們往往更簡單。

當我第一次看到它時,我雖然哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇。

據我所知,它是 Microsoft 的專有擴展(意味著 Oracle 不支持它)。

查看 SQL Server,如果您定義類似的表,則沒有區別

CREATE TABLE [dbo].[Table_2] ([col1] [int], [col2] [int]);

要麼

CREATE TABLE dbo.Table_2 (col1 int, col2 int);

這是個人或公司風格的問題。始終如一。

現在,如果您想將數據庫遷移到 Oracle,則無法使用括號。

您可以使用舊的引用標識符,但這些標識符區分大小寫,這會帶來很多麻煩。

從生成的程式碼中刪除所有括號是否是個好主意,避免使用空格、其他特殊字元和保留關鍵字作為名稱,並以大多數 DBMS 理解的方式進行編碼?

標準 SQL 對帶"引號的標識符使用雙引號。SQL Server 使用QUOTED_IDENTIFIER選項(ANSI_QUOTES在 mySQL 中)支持這一點。標準 SQL 總體上提高了可移植性,在這種情況下將移植到 Oracle。同樣,我會將 SQL 關鍵字更改為大寫(中級 SQL-92 要求)並擴展intINTEGER(入門級 SQL-92 要求)。

IMO 應該避免不必要地使用帶引號的標識符,無論是什麼味道。

這是一個主觀問題,但不必要的括號在我最討厭的列表的頂部附近 - 比拼寫錯誤的“!=”更煩人,但不如列列表中的前導逗號那麼糟糕。

客觀地說,考慮括號的目的:允許否則不合法的對象名稱。考慮到這個目的,括號在最壞的情況下是一種程式碼味道,在最好的情況下是懶惰的標誌。

引用自:https://dba.stackexchange.com/questions/280