【SQL Server】改行コードを取得・置換・更新する

SQL Serverで改行コード

SQL Serverで改行コードを含むレコードを検索・更新・置換したい場合があります。改行コードを含むレコードを取得する場合はASCIIコードを変換すればSQL Serverで扱えます。

改行コード

  • CR(キャリッジリターン)・・・CHAR(13)、NCHAR(13)
  • LF(ラインフィード)・・・CHAR(10)、NCHAR(10)

改行コードは「CR」「LF」があります。ASCIIコードは「CR」が「CHAR(13)」、「LF」が「CHAR(10)」です。

例1.SQL Serverで改行コードを取得する

--SQL Serverで改行コードCRを取得する
SELECT * FROM emp
WHERE address LIKE '%' + CHAR(13) + '%';
--SQL Serverで改行コードCRLFを取得する 
SELECT * FROM emp 
WHERE address LIKE '%' + CHAR(13) + CHAR(10) + '%';
--SQL Serverで改行コードCRLFを取得する(unicode文字) 
SELECT * FROM emp 
WHERE address LIKE '%' + NCHAR(13) + NCHAR(10) + '%'; 

SQL Serverで改行コードを使用したレコードを取得するには、検索条件にCHAR(13)やCHAR(10)を指定し、ワイルドカード「%」を使って検索すると改行コードを使用したレコードが取得できます。

UNICODEに対応したnchar型・nvarchar型の場合はCHAR(13)やCHAR(10)ではなく、NCHAR(13)やNCHAR(10)を使用します。

例2.SQL Serverで改行コードを更新する

--SQL Serverで改行コードCRつきで登録する
INSERT INTO emp (address)
VALUES ('東京都' + CHAR(13) + '渋谷区');
--SQL Serverで改行コードCRLFつきで登録する 
INSERT INTO emp (address) 
VALUES ('東京都' + CHAR(13) + CHAR(10) + '渋谷区'); 
--SQL Serverで改行コードCRLFつきで登録する(unicode文字) 
INSERT INTO emp (address) 
VALUES ('東京都' + NCHAR(13) + NCHAR(10) + '渋谷区');  

SQL Serverで改行コードつきのレコードを登録するには、CHAR(13)やCHAR(10)を指定するだけです。

例3.SQL Serverで改行コードを置換する

--SQL Serverで改行コードCRをスペースに置換する
UPDATE emp SET 
address = REPLACE(address, CHAR(13), ' ');
--SQL Serverで改行コードCRLFをスペースに置換する 
UPDATE emp SET 
address = REPLACE(address, CHAR(13) + CHAR(10), ' ');
--SQL Serverで改行コードCRLFをスペースに置換する(unicode文字) 
UPDATE emp SET 
address = REPLACE(address, NCHAR(13) + NCHAR(10), ' '); 

SQL Serverで改行コードつきのレコードを別の文字列に置換するには、CHAR(13)やCHAR(10)をREPLACEで置換します。

以上、SQL Serverで改行コードを含むレコードを取得・更新・置換する方法でした。

コメント