REPLACE (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

指定した文字列値をすべて別の文字列値に置き換えます。

Transact-SQL 構文表記規則

構文

REPLACE ( string_expression , string_pattern , string_replacement )  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

string_expression
検索する文字列を指定します。 string_expression 文字またはバイナリ データ型であることができます。

string_pattern
検索するサブストリングです。 string_pattern 文字またはバイナリ データ型であることができます。 string_pattern は、1 ページに収まる最大バイト数を超えないようにしてください。 string_pattern が空の文字列 ('') の場合、string_expression は変更されずに返されます。

string_replacement
置き換え後の文字列です。 string_replacement 文字またはバイナリ データ型であることができます。

戻り値の型

返します nvarchar が、入力引数のいずれかの場合、 nvarchar データが入力のそれ以外の場合を返します。 を置き換える varchar です。

いずれかの引数が NULL の場合は、NULL を返します。

場合 string_expression の種類はありません varchar (max) または nvarchar (max)、 置換 は 8,000 バイトで戻り値を切り捨てます。 8,000 バイトを超える値を返すには、大きな値を格納できるデータ型に string_expression を明示的にキャストする必要があります。

解説

REPLACE は、入力の照合順序に基づいて比較を行います。 特定の照合順序で比較を行うには、COLLATE を使用して、入力に明示的な照合順序を適用します。

0x0000 (char(0) ) の Windows 照合順序で未定義の文字は、REPLACE に含めることができません。

次の例では、abcdefghicde にある文字列 cdexxx に置換します。

SELECT REPLACE('abcdefghicde','cde','xxx');  
GO  

結果セットは次のようになります。

------------  
abxxxfghixxx  
(1 row(s) affected)  

次の例では、COLLATE 関数を使用します。

SELECT REPLACE('This is a Test'  COLLATE Latin1_General_BIN,  
'Test', 'desk' );  
GO  

結果セットは次のようになります。

------------  
This is a desk  
(1 row(s) affected)  

次の例では、REPLACE 関数を使用して、文に含まれるスペースの数を計算します。 まず、LEN 関数を使用して文の長さを計算します。 次に、REPLACE を使用して ' ' 文字を '' に置き換えます。 この処理が完了すると、文の長さが再計算されます。 結果として得られる違いは、文の空白文字の数です。

DECLARE @STR NVARCHAR(100), @LEN1 INT, @LEN2 INT;
SET @STR = N'This is a sentence with spaces in it.';
SET @LEN1 = LEN(@STR);
SET @STR = REPLACE(@STR, N' ', N'');
SET @LEN2 = LEN(@STR);
SELECT N'Number of spaces in the string: ' + CONVERT(NVARCHAR(20), @LEN1 - @LEN2);

GO  

結果セットは次のようになります。

------------  
Number of spaces in the sentence: 7  

(1 row(s) affected)  

参照

CONCAT (Transact-SQL)
CONCAT_WS (Transact-SQL)
FORMATMESSAGE (Transact-SQL)
QUOTENAME (Transact-SQL)
REVERSE (Transact-SQL)
STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)
STUFF (Transact-SQL)
TRANSLATE (Transact-SQL)
データ型 (Transact-SQL)
文字列関数 (Transact-SQL)