SQL Server 2017 以前で文字列をトリムする方法

2024-04-07

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


ALTER TABLE、CHECK CONSTRAINT、DEFAULT値を使った方法!SQL Serverで大規模なテーブルにNOT NULL列を追加する3つの方法

方法ALTER TABLE ステートメントこの方法は、最もシンプルで一般的な方法です。次の構文を使用します。例長所シンプルで使いやすいすべてのデータ型をサポート短所大規模なテーブルの場合、実行時間が長くなる可能性があるインデックスの再構築が必要になる...


ASP.NETとSQL Server間の接続プール問題:徹底解説

接続プール問題は、以下のような症状で現れます。パフォーマンスの低下: アプリケーションの応答速度が遅くなるエラー: "接続がタイムアウトしました" などのエラーが発生する接続の切断: アプリケーションとデータベースの接続が頻繁に切断される接続プール問題は、さまざまな原因によって発生します。...


MySQL - SELECT * INTO OUTFILE LOCAL ? のサンプルコードと実行方法

SELECT * INTO OUTFILE LOCAL ? は、MySQLデータベースからデータをローカルファイルに書き出すためのSQLステートメントです。このステートメントは、SELECT ステートメントで指定されたデータを、指定されたローカルファイルにテキスト形式で書き出します。...


PostgreSQLで既存の制約を確認してから制約を追加する

PostgreSQL では、ALTER TABLE ステートメントを使用して既存のテーブルに制約を追加できます。しかし、制約が既に存在する場合、エラーが発生します。この問題を回避するには、制約が存在するかどうかを確認してから追加する必要があります。...


psycopg2 ライブラリ: PostgreSQL と Python を接続する

この解説では、sql、postgresql、roles に関連する 「PostgreSQL ロール(ユーザー)が存在しない場合に作成する」 プログラミングについて、以下の内容を分かりやすく日本語で説明します。以下の環境を想定しています。PostgreSQL サーバーがインストールされている...