Visual Studio 2008 が sql の列名を角かっこで囲んでいることに気付きました。ブラケットには利点がありますか? 私が T-SQL を手作業でコーディングするとき、それらを気にしたことはありません。
例:
ビジュアルスタジオ:
SELECT [column1], [column2] etc...
私自身の方法:
SELECT column1, column2 etc...
Visual Studio 2008 が sql の列名を角かっこで囲んでいることに気付きました。ブラケットには利点がありますか? 私が T-SQL を手作業でコーディングするとき、それらを気にしたことはありません。
例:
ビジュアルスタジオ:
SELECT [column1], [column2] etc...
私自身の方法:
SELECT column1, column2 etc...
列名または識別子にキーワードまたは特殊文字を使用する場合は、括弧が必要です。列に (スペースを使用して) 名前を付けることができますが[First Name]
、その列を参照するたびに括弧を使用する必要があります。
新しいツールは、念のために、または一貫性のために、それらをどこにでも追加します。
列に SQL キーワードと同じ名前がある場合、または列にスペースが含まれている場合に便利です。
例:
create table test ( id int, user varchar(20) )
大野!キーワード「user」付近の構文が正しくありません。でもこれは:
create table test ( id int, [user] varchar(20) )
正常に動作します。
たとえば、(何らかの理由で) 特定の文字を含む列名を使用している場合に便利です。
Select First Name From People
動作しませんが、列名を角括弧で囲むと動作します
Select [First Name] From People
つまり、オブジェクト名を明示的に宣言する方法です。列、テーブル、データベース、ユーザー、またはサーバー。
予約語の使用を避ける命名規則に従っているにもかかわらず、Microsoft は新しい予約語を追加しています。角かっこを使用すると、最初に Microsoft の新しい予約語をクライアント コードから編集する必要なく、コードを新しい SQL Server バージョンにアップグレードできます。その編集は重大な懸念事項になる可能性があります。プロジェクトが時期尚早に廃止される可能性があります....
ブラケットは、スクリプト内ですべてを置換する場合にも役立ちます。バッチに @String という名前の変数と [String] という名前の列が含まれている場合、@String を @NewString に名前変更しなくても、列の名前を [NewString] に変更できます。
列名には、クエリ実行エンジンを混乱させる文字や予約語が含まれている可能性があるため、常にそれらを括弧で囲んでこれを防ぎます。問題をチェックしてから対処するよりも簡単だと思います。
1990 年代の SQL の暗黒時代には、SQL 設計者が辞書に各単語をキーワードとして追加して、無限の新機能の雪崩を作成しようとしていたため、SQL3 ドラフトと呼ばれていました。
したがって、前方互換性が維持されます。
また、別の素晴らしい副作用があることもわかりました。コード レビューやリファクタリングで grep を使用するときに大いに役立ちます。
列名が予約語である場合は、括弧を使用できます。
制御していない列名のコレクションから SQL ステートメントをプログラムで生成している場合は、常に括弧を使用することで問題を回避できます。
さらに、一部の SharePoint データベースには、名前にハイフンが含まれています。SQL ステートメントで角かっこを使用すると、名前を正しく解析できます。
一貫性のためにそこに追加すると思います...列名にスペースまたは特殊文字が含まれている場合にのみ必要ですが、IDEがSQLを生成するときに常にそれらを含める方がクリーンです。