SQL Server 2008 R2 で文字列操作をマスターしよう!CONCAT 関数の使い方から応用例まで
SQL Server 2008 R2 での CONCAT 関数の使い方
SQL Server 2008 R2 には、文字列を連結するための CONCAT 関数はありません。代わりに、プラス記号 (+
) を使用して文字列を連結できます。
プラス記号を使用した文字列の連結
以下の例では、Customers
テーブルの FirstName
列と LastName
列の値を連結して、完全な名前を作成する方法を示します。
SELECT FirstName + ' ' + LastName AS FullName
FROM Customers;
このクエリは、以下の結果を返します。
FullName
-------
John Doe
Jane Doe
Peter Jones
非文字列値を連結する場合、それらの値を文字列に変換する必要があります。
以下の例では、CustomerID
列の値と OrderDate
列の値を連結して、顧客 ID と注文日の組み合わせを作成する方法を示します。
SELECT CONVERT(VARCHAR(10), CustomerID) + '-' + CONVERT(VARCHAR(10), OrderDate, 120) AS OrderID
FROM Orders;
OrderID
-------
1-2023-10-04
2-2023-11-15
3-2024-01-01
その他の注意事項
- プラス記号と CONCAT 関数の両方で、NULL 値は空の文字列として扱われます。
- 連結する文字列の合計長が 4,000 文字を超えると、エラーが発生する可能性があります。
補足
SQL Server 2012 以降では、CONCAT 関数が正式に導入されました。 CONCAT 関数はプラス記号と同じように使用できますが、引数の型変換が不要になるという利点があります。
以下の例は、SQL Server 2012 以降で CONCAT 関数を使用して同じ結果を取得する方法を示しています。
SELECT CONCAT(FirstName, ' ', LastName) AS FullName
FROM Customers;
SQL Server 2008 R2 での CONCAT 関数のサンプルコード
SELECT CustomerID, FirstName, LastName,
FirstName + ' ' + LastName AS FullName
FROM Customers;
CustomerID FirstName LastName FullName
---------- --------- --------- -------------
1 John Doe John Doe
2 Jane Doe Jane Doe
3 Peter Jones Peter Jones
例 2: 顧客 ID と注文日の組み合わせを作成する
SELECT OrderID, CustomerID, OrderDate,
CONVERT(VARCHAR(10), CustomerID) + '-' + CONVERT(VARCHAR(10), OrderDate, 120) AS OrderID2
FROM Orders;
OrderID CustomerID OrderDate OrderID2
-------- ------------ ------------ ---------
1 1 2023-10-04 1-2023-10-04
2 2 2023-11-15 2-2023-11-15
3 3 2024-01-01 3-2024-01-01
例 3: 製品名と説明を結合する
この例では、Products
テーブルの ProductName
列と ProductDescription
列の値を連結して、製品名と説明を結合する方法を示します。
SELECT ProductID, ProductName, ProductDescription,
ProductName + ' - ' + ProductDescription AS ProductInfo
FROM Products;
ProductID ProductName ProductDescription ProductInfo
---------- ------------ ------------------------------------------------------- -------------
1 Widget A Small, lightweight widget for everyday tasks. Widget A - Small, lightweight widget for everyday tasks.
2 Widget B Heavy-duty widget for demanding applications. Widget B - Heavy-duty widget for demanding applications.
3 Widget C Multi-purpose widget with a variety of features. Widget C - Multi-purpose widget with a variety of features.
SQL Server 2008 R2 で文字列を連結するその他の方法
以下に、そのうちのいくつかをご紹介します。
STUFF 関数は、文字列の一部を別の文字列で置換するために使用できますが、文字列の連結にも使用できます。
SELECT CustomerID, FirstName, LastName,
STUFF(FirstName + ' ', 12, LEN(FirstName), LastName) AS FullName
FROM Customers;
CustomerID FirstName LastName FullName
---------- --------- --------- -------------
1 John Doe John Doe
2 Jane Doe Jane Doe
3 Peter Jones Peter Jones
SUBSTRING 関数と REPEAT 関数
SUBSTRING 関数は、文字列の一部を抽出するために使用できますが、文字列の連結にも使用できます。 REPEAT 関数は、文字列を指定した回数繰り返すために使用できます。
SELECT CustomerID, FirstName, LastName,
FirstName + ' ' + REPEAT(' ', LEN(LastName) - LEN(FirstName)) + LastName AS FullName
FROM Customers;
このクエリは、上記の STUFF 関数を使用した例と同じ結果を返します。
SELECT CustomerID, OrderDate,
FORMAT(CustomerID, '00') + '-' + FORMAT(OrderDate, 'yyyy-MM-dd') AS OrderID2
FROM Orders;
列のエイリアスを使用して、選択された列に新しい名前を付けることができます。 この新しい名前を使用して、他の列と結合できます。
SELECT CustomerID, FirstName AS FName, LastName AS LName,
FName + ' ' + LName AS FullName
FROM Customers;
上記以外にも、SQL Server 2008 R2 で文字列を連結する方法はいくつかあります。
sql-server sql-server-2008 t-sql