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) + '%';
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) + '%';
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) + '%';
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) + '%';
SET FirstName = REPLACE(REPLACE(FirstName, CHAR(13), ''), CHAR(10), '') -- Option 2
WHERE FirstName LIKE '%' + CHAR(13) + '%';