文字列の左端や右端に余分な空白が付属することがあります.これらの空白を取り除くにはTRIM関数を使用します.TRIM関数はSQL92/99で既定されており,多くのDBMSがサポートしています. また,文字列の左端の空白だけを削除するLTRIM関数や,右端の空白だけを削除するRTRIM関数も存在します.これらの関数はSQL92/99では既定されていませんが,便利なので多くのDBMSが独自にサポートしています. 以下に各DBMSがどの関数に対応しているかを示します.
| DBMS | TRIM | LTRIM | RTRIM |
|---|---|---|---|
| Access | △ | ○ | ○ |
| SQLServer | × | ○ | ○ |
| Oracle | ○ | ○ | ○ |
| MySQL | ○ | ○ | ○ |
| PostgreSQL | ○ | ○ | ○ |
ご覧のとおりSQLServerはLTRIM関数とRTRIM関数はサポートしていますが,なぜかTRIM関数をサポートしていません.また,AccessはTRIM関数の一部の機能のみサポートしています.(空白の除去を行うことはAccessでも可能です.)
TRIM関数の引数に文字列を指定すると,左右の空白を除去した文字列を取得することができます.
SQL
SELECT TRIM(' スヌーピー ')
SQLの結果
| SELECT TRIM(' スヌーピー ') |
|---|
| スヌーピー|←文字列の終り |
LTRIM関数を使用することで文字列の左端の空白を,RTRIM関数を使用することで文字列の右端の空白をそれぞれ除去することができます.
LTRIM
SELECT LTRIM(' スヌーピー ')
LTRIMの結果
| SELECT LTRIM(' スヌーピー ') |
|---|
| スヌーピー |←文字列の終り |
RTRIM
SELECT RTRIM(' スヌーピー ')
RTRIMの結果
| SELECT RTRIM(' スヌーピー ') |
|---|
| スヌーピー|←文字列の終り |
例として以下のテーブルの部署名の左端の空白を除去して取得します.
部署
| 部署コード | 部署名 |
|---|---|
| A0001 | 人事部 |
| A0002 | 総務部 |
| A0003 | 財務部 |
| A0004 | 営業部 |
SQL
SELECT 部署コード, LTRIM(部署名)
FROM 部署
SQLの結果
| 部署コード | LTRIM(部署名) |
|---|---|
| A0001 | 人事部 |
| A0002 | 総務部 |
| A0003 | 財務部 |
| A0004 | 営業部 |