SQLで文字列から空白を削除する方法はいくつかあります。
具体的には、空白の種類や空白の位置(前後の空白だけ、すべての空白など)に応じて方法を選択します。
前後の空白を削除する
SQLでは、TRIM
関数を使用すると、文字列の先頭と末尾の空白を削除できます。
使用例
SELECT TRIM(' sample string ') AS trimmed_string;
出力例
trimmed_string
---------------
sample string
文字列内のすべての空白を削除する
文字列内のすべての空白を削除したい場合、REPLACE
関数を使用します。
使用例
SELECT REPLACE('sample string with spaces', ' ', '') AS no_spaces;
出力例
no_spaces
----------
samplestringwithspaces
特定の方向の空白を削除する
先頭の空白のみ削除(LTRIM)
SELECT LTRIM(' sample string') AS left_trimmed;
left_trimmed
-------------
sample string
末尾の空白のみ削除(RTRIM)
SELECT RTRIM('sample string ') AS right_trimmed;
right_trimmed
--------------
sample string
複数の連続する空白を1つにまとめる
複数の連続した空白を1つにまとめたい場合は、SQL標準関数ではなく正規表現を使える環境(たとえば、PostgreSQLやOracle)で対応できます。
PostgreSQLの例
SELECT REGEXP_REPLACE('sample string with spaces', '\s+', ' ') AS single_spaces;
Oracleの例
SELECT REGEXP_REPLACE('sample string with spaces', '\s+', ' ') AS single_spaces FROM dual;
出力例
single_spaces
--------------
sample string with spaces
注意点
- データベース環境に応じたサポート
TRIM
やREPLACE
はほとんどのSQLデータベースでサポートされていますが、正規表現関数は環境によって異なります(例:MySQL 8.0以降でサポート)。 - 全角スペースの扱い
日本語などで使用される全角スペースを削除する場合は、SQL標準関数だけでは対応できないことがあります。その場合は以下のように記述します。
全角スペースの削除(MySQLの場合)
SELECT REPLACE('sample string with 全角スペース', ' ', '') AS no_fullwidth_spaces;