SQLServerでのsubstringの使い方とは?文字列結合・charindexとの組み合わせ
- システム
エンジニア - SQLServerでsubstringはどこで使うことができまか。
- プロジェクト
マネージャー - 例えば、substringを使うと、select文で取得した結果の文字列の切り出しで使うことができます。また、文字列結合とsubstringを組み合わせたり、update文に使うこともできます。
SQLServerでのsubstringの使い方とは?
今回は、SQLServerでのsubstringの使い方について説明します。
substringを使うと、select文で取得した結果の文字列切り出しができます。文字列結合とsubstringを組み合わせることもできます。
また、update文にsubstringを使うこともできます。
SQLServerでのsubstringの使い方に興味のある方はぜひご覧ください。
基本的な使い方
SQLServerで文字列を切り出すにはsubstringを使います。
substringは以下の文法です。
1
|
substring(文字列, 開始位置, 文字数)
|
実際のSQL文を見てみましょう。
1
2
|
select substring('123456', 3, 3);
go
|
実行結果は以下のようになります。
1
|
345
|
3文字目から3文字を切り出していることが分かります。
テーブルに対してselect文を実行していませんが、このような使い方もできます。
select文で使う
SQLServerの実際のテーブルに対してselect文を実行し、取得結果の切り出しをしてみましょう。
以下のような”table_1″テーブルがあるとします。
1
2
3
4
5
6
7
|
id last_name first_name phone
-------------------- ---------- ---------- -------------
1 taro tanaka 090-1234-5678
2 hanako yamada 03-2345-6789
3 ichiro suzuki 080-1111-2222
4 satomi sato 04-3333-4444
5 jiro takahashi 070-6666-7777
|
substringで文字列を切り出してみます。
実際のSQL文を見てみましょう。
1
2
|
select substring(last_name, 1, 3) from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
|
---
tar
han
ich
sat
jir
|
last_nameの先頭3文字が取得できています。
上記で説明したように、substringの引数は3つです。例えば3文字目以降を取得するにはどうすればよいでしょうか。
3つ目の引数を十分大きな数字にすることで、指定文字以降を取得できます。
実際のSQL文を見てみましょう。
1
2
|
select substring(last_name, 3, 100) from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
|
----------
ro
nako
hiro
tomi
ro
|
ここでは、substringの第3引数に100を指定しています。
このように、SQLServerでは、select文でsubstringが使用できます。
select文で使う(where句)
SQLServerでは、where句でもsubstringを使用できます。
実際のSQL文を見てみましょう。
1
2
|
select last_name from table_1 where substring(last_name, 1, 3) = "ich";
go
|
実行結果は以下のようになります。
1
2
3
|
last_name
----------
ichiro
|
先頭3文字が”ich”に一致するレコードが取得できていることが分かります。
このように、SQLServerでは、where句でもsubstringを使用できます。
select文で使う(文字列結合との組み合わせ)
SQLServerでは、substringと文字列結合を組み合わせれば、Initialを取得するようなこともできます。
文字列結合とは”+”で取得結果を結合するものです。
実際のSQL文を見てみましょう。
1
2
|
select id, (substring(last_name, 1, 1) + '.' + substring(first_name, 1, 1)) as Initial from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
id Initial
-------------------- -------
1 t.t
2 h.y
3 i.s
4 s.s
5 j.t
|
last_nameとfirst_nameの1文字目が取得され、”.”で文字列結合されていることが分かります。
結果はInitialとして取得できています。
select文で使う(charindexとの組み合わせ)
SQLServerでは、substringとcharindexを組み合わせれば、指定文字までの文字列切り出しができます。
charindexとは、指定文字のindexを返すものです。
実際のSQL文を見てみましょう。
1
2
|
select last_name, first_name, substring(phone, 1, charindex('-', phone) - 1) as phone1, substring(phone, charindex('-', phone) + 1, charindex('-', phone, charindex('-', phone) + 1) - charindex('-', phone) - 1) as phone2, substring(phone, charindex('-', phone, charindex('-', phone) + 1) + 1, 100 - charindex('-', phone, charindex('-', phone) + 1)) as phone3 from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
last_name first_name phone1 phone2 phone3
---------------------------------------------------------------------------------
taro tanaka 090 1234 5678
hanako yamada 03 2345 6789
ichiro suzuki 080 1111 2222
satomi sato 04 3333 4444
jiro takahashi 070 6666 7777
|
charindexで指定文字(この場合はハイフン)のindexを取得できます。
1つめのsubstringでハイフンまでの文字列を切り出し、2つめのsubstringで次のハイフンまでの文字列を切り出しています。
最後に、3つめのsubstringで最後まで切り出しています。
substringと組み合わせることで、ハイフンをセパレータとして文字列の切り出しができます。
このように、SQLServerでは、substringとcharindexを組み合わせれば、指定文字までの文字列切り出しができます。
update文で使う
SQL Serverでは、update文でもsubstringを使用できます。
実際のSQL文を見てみましょう。
1
2
3
4
|
update table_1 set last_name = substring(last_name, 1, 3);
go
select last_name from table_1;
go
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
last_name
----------
tar
han
ich
sat
jir
|
last_nameの先頭3文字で更新されていることが分かります。
このように、SQLServerでは、update文でもsubstringを使用できます。
- システム
エンジニア - SQLServerではupdate文でもsubstringを使用できるのですね。
- プロジェクト
マネージャー - その通りです。substringのさまざまな使い方を理解してぜひご自身でもSQL文を書いてみてください。
まとめ
いかがでしたでしょうか。SQLServerでのsubstringの使い方について説明しました。
substringを使うと、select文で取得した結果の文字列切り出しができます。文字列結合とsubstringを組み合わせることもできます。
また、update文にsubstringを使うこともできます。
ぜひご自身で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万円東京都江東区(木場駅)