SQLServerでの文字列結合の方法とは?”+”を使用する方法とconcatを使用する方法
- システム
エンジニア - SQLServerで文字列結合するには、“+”を使う以外に何か方法はありますか。
- プロジェクト
マネージャー - “+”以外にconcatを使用しても文字列結合できます。
SQLServerでの文字列結合の方法とは?
今回は、SQLServerでの文字列結合の方法について説明します。
文字列結合するには、”+”を使用する方法と、concatを使用する方法があります。”+”の場合、同じ型同士の結合しかできません。
異なる型同士を文字列結合するには、castやconvertなどを使用して同じ型に変換したうえで結合します。
これらの方法について紹介します。
SQLServerでの文字列結合の方法に興味のある方はぜひご覧ください。
基本的な使い方
SQLServerでの文字列結合の方法を紹介します。
文字列結合には”+”を使用します。
実際のSQL文を見てみましょう。
1
2
|
select 'str1' + 'str2';
go
|
実行結果は以下のようになります。
1
2
|
--------
str1str2
|
文字列が結合されていることが分かります。
テーブルに対してselect文を実行していませんが、上記のような使い方もできます。
SQL Serverのテーブルに対して実行してみます。
ここでは、以下のような”table_1″テーブルがあるとします。
1
2
3
4
5
6
7
|
id last_name first_name phone birth_date
-------------------- ---------- ---------- ------------- ----------------
1 taro tanaka 090-1234-5678 1970-12-15
2 hanako yamada 03-2345-6789 1980-01-02
3 ichiro suzuki 080-1111-2222 1990-02-05
4 satomi sato 04-3333-4444 2000-08-12
5 jiro takahashi 070-6666-7777 2010-11-23
|
文字列結合のSQL文を見てみましょう。
1
2
|
select last_name + first_name as name from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
name
--------------------
taro tanaka
hanako yamada
ichiro suzuki
satomi sato
jiro takahashi
|
last_nameとfirst_nameを結合してnameとして取得していることが分かります。
また、取得結果に文字列結合することもできます。
文字列結合のSQL文を見てみましょう。
1
2
|
select 'last name is ' + last_name from table_1;
go
|
1
2
3
4
5
6
|
-----------------------
last name is taro
last name is hanako
last name is ichiro
last name is satomi
last name is jiro
|
select文の取得結果に文字列を結合していることが分かります。
文字列結合は、同じデータ型同士、もしくは暗黙的に変換できるもの同士を指定する必要があります。
このように、SQLServerでの文字列結合には”+”を使用します。
concatを使用して結合
SQLServerでは、”+”で結合する以外にも、concatを使用して文字列結合できます。
実際のSQL文を見てみましょう。
1
2
|
select concat(last_name, first_name) as name from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
name
--------------------
taro tanaka
hanako yamada
ichiro suzuki
satomi sato
jiro takahashi
|
文字列が結合されていることが分かります。
このように、SQLServerでは、”+”で結合する以外にも、concatを使用して文字列結合できます。
数値型と文字列型の結合
SQLServerでの異なる型同士の文字列結合方法を紹介します。
ここでは、数値型と文字列型の結合をしてみます。
実際のSQL文を見てみましょう。
1
2
|
select cast(id as varchar) + ':' + last_name as result from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
result
-----------------------------------------
1:taro
2:hanako
3:ichiro
4:satomi
5:jiro
|
castで整数型を文字列型にキャストして文字列結合しています。
また、convertを使う方法もあります。
1
2
|
select convert(varchar, id) + ':' + last_name as result from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
result
-----------------------------------------
1:taro
2:hanako
3:ichiro
4:satomi
5:jiro
|
このように、SQLServerでは、型の異なる結合はcastやconvertを使用して、”+”で文字列結合します。
日付型と文字列型を結合
SQLServerでの日付型と文字列型を結合する方法を紹介します。
実際のSQL文を見てみましょう。
1
2
|
select last_name + convert(nvarchar, birth_date) as result from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
result
----------------------------------------
taro 1970-12-15
hanako 1980-01-02
ichiro 1990-02-05
satomi 2000-08-12
jiro 2010-11-23
|
convertで日付型を文字列型にキャストして文字列結合しています。
また、formatを使う方法もあります。
1
2
|
select last_name + format(birth_date, 'd') as result from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
result
--------------------
taro 1970/12/15
hanako 1980/01/02
ichiro 1990/02/05
satomi 2000/08/12
jiro 2010/11/23
|
formatの記述方法については、以下サイトに詳細が記載されています。
https://docs.microsoft.com/ja-jp/sql/t-sql/functions/format-transact-sql?view=sql-server-2017
このように、SQLServerでは日付型と文字列型を結合できます。
NULLを含む場合の結合
NULLを含む場合の結合を紹介します。
実際のSQL文を見てみましょう。
1
2
|
select last_name + NULL as result from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
result
-----------
NULL
NULL
NULL
NULL
NULL
|
文字列とNULLを結合すると、結果はNULLとなります。
NULLが都合が悪い場合、isnullを使用してNULLを’ ‘に置換する方法があります。
実際のSQL文を見てみましょう。
1
2
|
select last_name + isnull(NULL, '') as result from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
result
-----------
taro
hanako
ichiro
satomi
jiro
|
isnullを使用するかしないかは、用途に応じて使い分けてください。
- システム
エンジニア - 異なる型同士の文字列結合方法は参考になりました。
- プロジェクト
マネージャー - 異なる型同士を文字列結合するには、castやconvertなどを使用して同じ型に変換してから結合することを覚えておきましょう。
まとめ
いかがでしたでしょうか。SQLServerでの文字列結合の方法について説明しました。
文字列結合するには、”+”を使用する方法と、concatを使用する方法があります。”+”の場合、同じ型同士の結合しかできません。異なる型同士を文字列結合するには、castやconvertなどを使用して同じ型に変換したうえで結合します。
ぜひご自身でSQL文を書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
SQLServer新着案件New Job
-
蔦屋書新店オープンに関するアプリ開発/Oracle/東京都渋谷区/【WEB面談可】/在宅勤務
月給56万~59万円東京都渋谷区(神泉駅) -
資産運用会社向け残高管理システム運用保守/SQLServer/東京都中央区/【WEB面談可】
月給50万~60万円東京都中央区(銀座駅) -
資産運用会社向け残高管理システム開発のテスター/SQLServer/東京都中央区/【WEB面談可】
月給25万~35万円東京都中央区(銀座駅) -
放射線部門システムパッケージの運用保守/Oracle/東京都港区/【WEB面談可】
月給50万~60万円東京都港区(品川駅) -
放射線部門システムパッケージの開発のテスター/Oracle/東京都港区/【WEB面談可】
月給25万~35万円東京都港区(品川駅) -
営業フロントシステム運用保守/ASP.NET/東京都江東区/【WEB面談可】
月給50万~60万円東京都江東区(木場駅)