SQL で改行コードを削除する

SQL で改行コードを削除するには?

値に望まない改行コードが入ってしまって、アプリケーションが想定どおりに動かなかったりすることありませんか?

ここでは、SQL での改行コードの削除方法についてご紹介します。

SQL 内の改行コードについて

まず、SQL で改行コードを指定する際には CHAR 関数を使って、以下の ASCII コードを文字に変換して使用します。

CHAR(13) - CR: キャリッジリターン (carriage return)
CHAR(10) - LF: ラインフィード (line feed)

SQL で改行コードが入っているレコードを探す

カラムの値に改行コードが入っているレコードを探してみましょう。

テキストエディターや OS などによって、改行コードは LF のみであったり、CR+LF であったりしますよね。 ここでは、 CR+CF が入っている前提で確認してみたいと思います。

例えば、Students テーブルの First Name に改行コードが入っているか確認した時には、以下のようなクエリーが使えます。

SELECT   FirstName
FROM     Students
WHERE    FirstName LIKE '%' + CHAR(13) + '%';

CHAR(13) の部分を CHAR(13) + CHAR(10) としても OK です。

SQL で改行コードを削除する

UPDATE 文で改行コードを削除して更新してしまう前に、まずは SELECT 文で確認してみましょう。

SELECT   FirstName,
         REPLACE(FirstName, CHAR(13) + CHAR(10), ''), -- Option 1
         REPLACE(REPLACE(FirstName, CHAR(13), ''), CHAR(10), '') -- Option 2
FROM     Students
WHERE    FirstName LIKE '%' + CHAR(13) + '%';

このクエリーによって取得された結果を確認して、Option 1の方法で削除できているようでしたら、Option 1 で大丈夫です。 もし Option 1 で上手くいかない場合は Option 2 を試してみてください。

データから改行コードが削除されることを確認したら、UPDATE 文で更新しましょう!

UPDATE   Students
SET      FirstName = REPLACE(FirstName, CHAR(13) + CHAR(10), '') -- Option 1
WHERE    FirstName LIKE '%' + CHAR(13) + '%';

UPDATE   Students
SET      FirstName = REPLACE(REPLACE(FirstName, CHAR(13), ''), CHAR(10), '') -- Option 2
WHERE    FirstName LIKE '%' + CHAR(13) + '%';
© 2010-2024 SQL Server 入門