SQL Server 2017 以前で文字列をトリムする方法
SQL Server 2017 より前のバージョンで文字列をトリムする方法
LTRIM関数は、文字列の先頭から指定した文字を削除します。
SELECT LTRIM(' Hello, World! ');
-- 結果: 'Hello, World! '
SELECT RTRIM(' Hello, World! ');
-- 結果: ' Hello, World!'
SELECT TRIM(' Hello, World! ');
-- 結果: 'Hello, World!'
各関数の詳細
関数 | 説明 |
---|---|
LTRIM(文字列, [削除文字]) | 文字列の先頭から指定した文字を削除します。 |
RTRIM(文字列, [削除文字]) | 文字列の末尾から指定した文字を削除します。 |
TRIM(文字列, [削除文字]) | 文字列の先頭と末尾から指定した文字を削除します。 |
削除文字は省略可能です。省略した場合、デフォルトでは空白文字(スペース、タブ、改行など)が削除されます。
使用例
以下の例では、LTRIM関数、RTRIM関数、TRIM関数をそれぞれ使用して、文字列の先頭と末尾から空白文字を削除しています。
-- LTRIM関数
SELECT LTRIM(' Hello, World! ');
-- 結果: 'Hello, World! '
-- RTRIM関数
SELECT RTRIM(' Hello, World! ');
-- 結果: ' Hello, World!'
-- TRIM関数
SELECT TRIM(' Hello, World! ');
-- 結果: 'Hello, World!'
補足
- SQL Server 2017 以降のバージョンの場合は、LTRIM関数、RTRIM関数、TRIM関数に加えて、SUBSTRING関数を使用して文字列をトリムすることもできます。
-- テーブル作成
CREATE TABLE dbo.Sample
(
ID INT,
Name VARCHAR(50)
);
-- データ挿入
INSERT INTO dbo.Sample (ID, Name)
VALUES (1, ' Hello, World! ');
-- LTRIM関数
SELECT ID, LTRIM(Name) AS Name
FROM dbo.Sample;
-- 結果:
-- ID | Name
-- -- | --
-- 1 | Hello, World!
-- RTRIM関数
SELECT ID, RTRIM(Name) AS Name
FROM dbo.Sample;
-- 結果:
-- ID | Name
-- -- | --
-- 1 | Hello, World!
-- TRIM関数
SELECT ID, TRIM(Name) AS Name
FROM dbo.Sample;
-- 結果:
-- ID | Name
-- -- | --
-- 1 | Hello, World!
その他のサンプル
- 特定の文字を削除したい場合は、削除文字を指定します。
SELECT LTRIM(' Hello, World! ', ' ');
-- 結果: Hello, World!
SELECT RTRIM(' Hello, World! ', '!');
-- 結果: Hello, World!
SELECT TRIM(' Hello, World! ', ' !');
-- 結果: Hello, World
- 文字列の先頭からn文字を削除したい場合は、SUBSTRING関数を組み合わせて使用します。
SELECT SUBSTRING('Hello, World!', 2, LEN('Hello, World!') - 1);
-- 結果: ello, World!
SELECT SUBSTRING('Hello, World!', 1, LEN('Hello, World!') - 2);
-- 結果: Hello, Worl
SQL Server 2017 以前のバージョンで文字列をトリムする他の方法
REPLACE関数は、文字列内の指定された文字列を別の文字列に置き換えます。
SELECT REPLACE(' Hello, World! ', ' ', '');
-- 結果: Hello,World!
PATINDEX関数とSUBSTRING関数
PATINDEX関数は、文字列内での指定された文字列の位置を検索します。SUBSTRING関数は、文字列の一部を抽出します。
SELECT SUBSTRING(' Hello, World! ', PATINDEX('%[^ ]%', ' Hello, World! ') + 1, LEN(' Hello, World! ') - PATINDEX('%[^ ]%', REVERSE(' Hello, World! ')));
-- 結果: Hello,World!
STUFF関数は、文字列の一部を別の文字列で置き換えます。
SELECT STUFF(' Hello, World! ', 1, PATINDEX('%[^ ]%', ' Hello, World! '), '');
-- 結果: Hello,World!
方法 | 説明 |
---|---|
REPLACE関数 | 文字列内の指定された文字列を別の文字列に置き換えます。 |
PATINDEX関数とSUBSTRING関数 | PATINDEX関数は、文字列内での指定された文字列の位置を検索します。SUBSTRING関数は、文字列の一部を抽出します。 |
STUFF関数 | 文字列の一部を別の文字列で置き換えます。 |
-- REPLACE関数
SELECT REPLACE(' Hello, World! ', ' ', '');
-- 結果: Hello,World!
-- PATINDEX関数とSUBSTRING関数
SELECT SUBSTRING(' Hello, World! ', PATINDEX('%[^ ]%', ' Hello, World! ') + 1, LEN(' Hello, World! ') - PATINDEX('%[^ ]%', REVERSE(' Hello, World! ')));
-- 結果: Hello,World!
-- STUFF関数
SELECT STUFF(' Hello, World! ', 1, PATINDEX('%[^ ]%', ' Hello, World! '), '');
-- 結果: Hello,World!
- REPLACE関数は、単純な置換に適しています。
- PATINDEX関数とSUBSTRING関数は、複雑なトリミング処理に適しています。
- STUFF関数は、REPLACE関数と同様に単純な置換に適していますが、より柔軟な使用方法があります。
sql sql-server