文字列の左端や右端にある特定の文字を削除するにはTRIM関数を使用します.TRIM関数というと文字列の左右の空白を削除するイメージが強いですが,SQL92/99に既定されているTRIM関数は空白だけでなく,指定した文字を削除する機能も備えています.したがってSQL92/99に準拠したTRIM関数をサポートしているDBMSであればこの関数を利用すればよいことになります.以下に各DBMSのTRIM関数のサポート状況を示します.
DBMS | TRIM |
---|---|
Access | 使用不可能.左右の空白を削除する機能のみサポート |
SQLServer | 使用不可能.(対応していない) |
Oracle | 使用可能.SQL92/99準拠 |
MySQL | 使用可能.SQL92/99準拠 |
PostgreSQL | 使用可能.SQL92/99準拠 |
ここでは実際に例を挙げてTRIM関数を説明します.
TRIM関数を用いて文字列の左右の特定文字を削除するには以下のようになります.
SQL
SELECT TRIM('X' FROM 'XXチャーリーXX')
もしくは
SELECT TRIM(BOTH 'X' FROM 'XXチャーリーXX')
SQLの結果
SELECT TRIM('X' FROM 'XXチャーリーXX') |
---|
チャーリー |
上記の例では文字列の左右にある'X'という文字を除去しています.
LEADINGオプションを使用することで左端の文字だけを削除することができます.
SQL
SELECT TRIM(LEADING 'X' FROM 'XXチャーリーXX')
SQLの結果
SELECT TRIM(LEADING 'X' FROM 'XXチャーリーXX') |
---|
チャーリーXX |
また,TRAILINGオプションを使用することで右端の文字だけを削除することができます.
SQL
SELECT TRIM(TRAILING 'X' FROM 'XXチャーリーXX')
SQLの結果
SELECT TRIM(TRAILING 'X' FROM 'XXチャーリーXX') |
---|
XXチャーリー |
例として以下のテーブルの部署名の左端の空白を除去して取得します.
部署
部署コード | 部署名 |
---|---|
A0001 | 人事部 |
A0002 | 総務部 |
A0003 | 財務部 |
A0004 | 営業部 |
SQL
SELECT 部署コード, TRIM(TRAILING '部' FROM 部門名) AS 部門
FROM 部署
SQLの結果
部署コード | 部署名 |
---|---|
A0001 | 人事 |
A0002 | 総務 |
A0003 | 財務 |
A0004 | 営業 |