SQLの文字列関数とは?よく利用される関数とその使い方について解説

 2022.04.12  株式会社システムインテグレータ

「SQLにはどんな関数があるのかな?」
「SQLの関数はどうやって使うのかな?」
と思っている、SQL初心者の方々へ関数の一部を紹介していきます。
今回は初心者訓練所#01として、文字列関数について説明しています。

文字列関数とは? 

文字列関数とは、文字列の項目に対して文字操作を行う関数になります。
文字列を連結したり、文字列から指定した文字を削除したり、文字を切り出したりと様々な関数が存在します。

また、例えば切り出した文字列を変換する等、複数の関数を組合せて使用することもできます。
ただし、数値項目には使用できませんので、使用する場合は、数値項目を文字列項目に変換してから使用する必要がありますので注意しましょう。 

よく使われる文字列関数の紹介

今回は、沢山ある文字列関数から、よく利用される3つの関数を紹介します。

TRIM関数

TRIM関数は文字列の除去を行います。
指定した文字列Xの先頭および末尾から文字列Yに含まれる要素を取り除いた
結果を返します。
文字列Yが省略された場合は空白文字が除去されます。構文は以下になります。
類似する関数に RTRIM(末尾のみ) 、LTRIM(先頭のみ) があります。

TRIM ( 文字列X )
TRIM ( 文字列X , 文字列Y )

REPLACE関数

REPLACE関数は、文字列の置き換えを行います。
文字列X中に出現する文字列Yを文字列Zに置き換えた値を返します。

REPLACE ( 文字列X , 文字列Y , 文字列Z )

SUBSTR関数

SUBSTR関数は、文字列から部分的に文字列を取得します。
文字列Xの開始位置Yから、文字数Z分の文字列を取得します。
文字数Zを指定しない場合は、開始位置Yから最後まで取得します。
開始位置Yはマイナスで指定することが出来ます。「-1」を指定した場合は
末尾を指します。

SUBSTR ( 文字列X , 開始位置Y , 文字数Z )
SUBSTR ( 文字列X , 開始位置Y )

文字列関数の使用例

それでは、実際にそれぞれの関数について確認していきましょう。
インストールが簡単なデータベース、SQLiteを使用して説明していきます。

TRIM関数

以下のように、社員テーブル(tbl_employees)に登録されている4件のデータを
使用して説明します。
見た目ではわかりませんが、emp_code=1,2のemp_nameの前後には半角ブランクが設定されています。
実際には、「_HORII_SEITARO_」「_ISHIMURA_HANA_」(_:半角ブランク)となっています。
sql-01-01-1

emp_nameにTRIM関数を使用してSELECTしてみると、前後の半角ブランクが
取り除かれます。

select emp_code , TRIM ( emp_name )  from tbl_employees;

sql-01-02

同様に、RTRIM関数を使用すると見た目ではわからないですが、右側(後)の半角ブランクが取り除かれます。

select emp_code , RTRIM ( emp_name ) from tbl_employees;

sql-01-03

また、LTRIM関数を使用すると左側(前)の半角ブランクが取り除かれます。

select emp_code , LTRIM ( emp_name ) from tbl_employees;

sql-01-04

最後に、TRIM関数の文字列Yに「A」を指定してSELECTするとemp_code=2,3,4の右側(後)の「A」の文字が取り除かれます。

select emp_code , TRIM ( emp_name , ’A’ ) from tbl_employees;

sql-01-05

TRIM関数は、使用例はSELECT文ですが、UPDATE文でも同様に使用できます。入力時に余計な空白等入ってしまったデータを整形するのに便利な関数です。

REPLACE関数

TRIM関数と同様に、社員テーブル(tbl_employees)に登録されている4件のデータを使用して説明します。
見た目では分かりにくいですが、emp_code=1,2の姓と名の間には全角ブランクが設定されています。
実際には、「HORII_SEITARO」「ISHIMURA_HANA」(_:全角ブランク)と
なっています。emp_code=3,4は、半角ブランクになっています。
sql-01-06

REPLACE関数を使用して文字列Xに「emp_name」、文字列Yに「全角ブランク」、文字列Zに「半角ブランク」を指定してSELECTしてみます。結果は、emp_code=1,2の姓名の間の全角ブランクが半角ブランクに置換えて表示されます。

select emp_code , REPLACE ( emp_name , ' ' , ' ' ) from tbl_employees;

sql-01-07

REPLACE関数もUPDATE文に使用できるので、一括変換等に便利な関数です。

SUBSTR関数

こちらも、社員テーブル(tbl_employees)に登録されている下図の4件のデータを使用して説明します。
sql-01-08

文字列Xに「emp_name」、開始位置Yに「1」、文字数Zに「7」を指定した場合。emp_nameの先頭から7文字が表示されます。emp_code=1の場合は6文字目の半角ブランクを1文字としてカウントされています。

select emp_code , SUBSTR ( emp_name , 1 , 7 ) from tbl_employees;

sql-01-09

開始位置Yに「10」、文字数Zに「3」を指定した場合。

select emp_code , SUBSTR ( emp_name , 10 , 3 ) from tbl_employees;

sql-01-10

開始位置Yに「10」を指定し文字数Zを指定しない場合は、10文字目から最後まで取得されます。

select emp_code , SUBSTR ( emp_name , 10 ) from tbl_employees;

sql-01-11

開始位置Yに「-4」、文字数Zに「3」を指定した場合。最後から数えて4文字目から3文字が取得されます。

select emp_code , SUBSTR ( emp_name , -4 , 3 ) from tbl_employees;

sql-01-12

半角の文字列を使用して説明していましたが、全角文字列の場合も同様に1文字が文字数1とカウントされます。

おすすめの学習コンテンツ

本記事を読み終わって、さらに学びたい方、次は問題にチャレンジしてみたい方には、以下の無料コンテンツをご用意しておりますので、ぜひ活用してみてください!

SQLiteについて
・本記事で使用したデータベース「SQLite」について解説する資料です。
 SQLiteとは?他のデータベースとの違いも解説

・「SQLite」のインストールや、SQLの基本を説明した動画です。
 「SQL-BOOT CAMP #1」実戦で通用する武器を身につけよう!

SQLの教科書
・一般的な解説から、実際にSQLを動かす操作イメージまで幅広く解説する資料です。
 「SQLの教科書」ビックデータ時代の必須科目

SQL無料トライアルテスト
・TOPSIC-SQLの無料トライアルテストをご受験していただけます。
 TOPSIC-SQL無料トライアルテスト

SQL基礎解説YouTube
・YouTubeでSQLの基礎的な内容を解説しています。
 SQL-BOOTCAMP #1 実戦で通用する武器を身につけよう!
 SQL-BOOTCAMP #2 連携(テーブル結合)して戦闘力アップ!
 SQL-BOOT CAMP #3 神出鬼没!「サブクエリ」を使いこなしてMISSION COMPLETE!

まとめ

本記事では、初心者訓練所の第1弾としてSQL初心者の方々向けに文字列関数の一部を紹介しました。本記事で使用したデータベース「SQLite」は簡単にインストールできます。是非、インストールして実際にSELECT文を入力してみてください。
それでは、次の訓練でまたお会いしましょう!

  (株)システムインテグレータ 製品企画室 元鬼軍曹 久保 司

5分でわかる!TOPSIC-SQL

RELATED POST関連記事


RECENT POST「SQL‐BOOTCAMP」の最新記事


SQLの文字列関数とは?よく利用される関数とその使い方について解説

TOPSIC TOPへ