SQL Server と T-SQL で角かっこ [] を使う 7 つの方法
SQL Server と T-SQL における角かっこ [] の用途
オプショナルな列名の指定
SELECT ステートメントで、列名の後に角かっこを記述すると、その列名の指定がオプショナルになります。つまり、その列が存在しなくてもエラーが発生せず、結果セットには含まれません。
SELECT [FirstName], LastName FROM Customers;
上記の例では、FirstName
列は存在しなくてもエラーが発生せず、LastName
列のみが結果セットに含まれます。
予約語の識別
SELECT ステートメントの列名に予約語を使用する場合、角かっこで囲むことで予約語として認識されず、列名として扱われます。
SELECT [Order], CustomerID FROM Orders;
上記の例では、Order
は予約語ですが、角かっこで囲むことで列名として認識されます。
ワイルドカード検索
LIKE 演算子でワイルドカード検索を行う際、角かっこで囲むことで特殊文字をリテラルとして扱えます。
SELECT * FROM Customers WHERE LastName LIKE '[A-Z]%';
上記の例では、LastName
列が A
から Z
で始まる文字列を含むレコードがすべて抽出されます。
パラメータのマーカー
ストアドプロシージャやT-SQL バッチでパラメータを使用する場合、角かっこで囲むことでパラメータのマーカーとして認識されます。
DECLARE @FirstName VARCHAR(50);
SET @FirstName = 'John';
SELECT * FROM Customers WHERE FirstName = @FirstName;
上記の例では、@FirstName
はパラメータのマーカーであり、FirstName
列の値と比較されます。
上記以外にも、角かっこは以下のような用途で使用されます。
- テーブル名やスキーマ名のエイリアスの指定
- GROUP BY 句での集計列のエイリアスの指定
- ORDER BY 句でのソート順序の指定
角かっこは、SQL Server と T-SQL で様々な用途で使用されます。用途を理解することで、より柔軟なクエリを作成できます。
SELECT [FirstName], LastName FROM Customers;
SELECT [Order], CustomerID FROM Orders;
SELECT * FROM Customers WHERE LastName LIKE '[A-Z]%';
DECLARE @FirstName VARCHAR(50);
SET @FirstName = 'John';
SELECT * FROM Customers WHERE FirstName = @FirstName;
SELECT * FROM [dbo].[Customers] AS C;
SELECT Gender, COUNT(*) AS Total
FROM Customers
GROUP BY Gender;
SELECT * FROM Customers
ORDER BY LastName ASC;
上記以外にも、角かっこは様々な用途で使用されます。詳細については、以下の参考資料を参照してください。
角かっこ [] の代替方法
- 列名の後に
IS NULL
を使用
SELECT FirstName, LastName FROM Customers
WHERE LastName IS NULL;
- 列名を二重引用符で囲む
SELECT "Order", CustomerID FROM Orders;
- ESCAPE 文字を使用
SELECT * FROM Customers WHERE LastName LIKE '%\_%';
- パラメータプレースホルダを使用
DECLARE @FirstName VARCHAR(50);
SET @FirstName = 'John';
SELECT * FROM Customers WHERE FirstName = @FirstName;
AS
キーワードを使用
SELECT * FROM Customers AS C;
SELECT Gender, COUNT(*) AS Total
FROM Customers
GROUP BY Gender;
ASC
またはDESC
キーワードを使用
SELECT * FROM Customers
ORDER BY LastName ASC;
角かっこ [] は様々な用途で使用できますが、上記のように他の方法で代替することも可能です。状況に合わせて適切な方法を選択してください。
sql-server t-sql