web-dev-qa-db-ja.com

[] SQLステートメント内の括弧

かっこはSQLステートメントで何をしますか?

たとえば、次のステートメントでは、

table1([columnname1]、columnname2)の値(val1、val2)に挿入する

また、テーブル名が角かっこで囲まれている場合はどうなりますか?

26
Adam Lerman

[]は識別子の区切りを示します。そのため、列にOrder Qtyのようなスペースが含まれている場合は、次のように[]で囲む必要があります。

select [Order qty] from [Client sales]

また、識別子として使用される予約済みキーワードをエスケープします

42
albertein

これは、「区切り識別子」のMicrosoft SQL Server非標準構文です。 SQLは、識別子の区切り文字をサポートして、テーブル名、列名、またはその他のメタデータオブジェクトに以下を含めることができるようにします。

  • SQL予約語:「注文」
  • スペースが含まれている単語: "Order qty"
  • 句読点を含む単語: "Order-qty"
  • 国際的な文字を含む単語
  • 大文字と小文字が区別される列名:「順序」と「順序」

Microsoft SQL Serverは角括弧を使用しますが、これは標準SQLが区切り識別子に使用する構文ではありません。通常、区切り文字には二重引用符を使用する必要があります。

Microsoft SQL Serverでは、次のように、区切り記号に標準の二重引用符を使用するモードを有効にできます。

SET QUOTED_IDENTIFIER ON;
13
Bill Karwin

これらは、予約済みキーワードまたは無効な列識別子をエスケープするためのものです。

CREATE TABLE test
(
  [select] varchar(15)
)

INSERT INTO test VALUES('abc')

SELECT [select] FROM test
5
Jorge Ferreira

列やテーブルなどの名前にキーワード(dateなど)を使用できます...

これはそもそも悪い習慣であるため、通常は含まれていません。あなたがそれらが使用されているのを見るはずの唯一の場所は、何もよく知らないSQLクエリで始めている人々によるものです。それ以外は、クエリが雑然とします。

2
Ty.

括弧内はすべて単一の識別子と見なされます(例:[テストマシン]。これは、名前をスペースで囲むか、予約語をエスケープするために使用できます(例:[順序]、[選択]、[グループ])。

1
Orion Adrian

これらは単に列またはテーブル名に特殊文字(スペースなど)を入れることができる区切り文字です。

insert into [Table One] ([Column Name 1], columnname2) values (val1, val2)
0
Darrel Miller

sQLの予約キーワードと同じ列名を使用する場合、その場合、列名を角括弧で囲んで、カスタム列名と既存の予約キーワードを区別できます。

0
sumon

スペースまたはダッシュ(-)などを含むテーブル名またはファイル名がある場合、「FROM句のSystaxエラー」を受け取ることがあります。これを解決するには、[]ブラケットを使用します。

参照: https://msdn.Microsoft.com/en-us/library/ms175874.aspx

0
juFo