REPLACE
Synopsis
REPLACE(string,oldsubstring,newsubstring)
引数
string | 部分文字列検索の検索対象となる文字列式。 |
oldsubstring | string 内で一致させる部分文字列。 |
newsubstring | oldsubstring を置換する部分文字列。 |
概要
REPLACE は部分文字列を検索して、一致するすべての文字列を置換します。マッチングでは、大文字と小文字が区別されます。一致が見つかれば、oldsubstring のすべてのインスタンスが newsubstring で置換されます。置換部分文字列は、置換対象となる部分文字列よりも長いか短い場合があります。部分文字列が見つからなければ、REPLACE は元の string を変更せずに返します。
REPLACE で返される値は、string のデータ型に関係なく、必ず VARCHAR データ型です。したがって、REPLACE(12.3,'.','_') などの置換操作が可能です。
空の文字列は文字列値です。そのため、引数の値には空の文字列を指定できます。ただし、ObjectScript の空文字列は、NULL として Caché SQL に渡されることに注意してください。
Caché SQL では、NULL はデータ値ではありません。このため、REPLACE 引数のいずれかに NULL を指定すると、一致があるかどうかに関係なく NULL が返されます。
この関数には Transact-SQL 実装との互換性があります。
REPLACE、STUFF、および $TRANSLATE
REPLACE および STUFF の両方とも、部分文字列の置換を実行します。REPLACE は、データ値によって部分文字列を検索します。STUFF は、文字列の位置と長さによって部分文字列を検索します。
REPLACE は、1 つの文字列と文字列をマッチングして置換します。$TRANSLATE は、文字と文字をマッチングして置換します。指定された 1 つまたは複数の単一文字のすべてのインスタンスを、指定された対応する置換単一文字に置き換えることができます。指定された 1 つまたは複数の単一文字のすべてのインスタンスを 1 つの文字列から削除することもできます。
既定では、3 つすべての関数で大文字と小文字が区別され、一致するすべてのインスタンスが置換されます。
部分文字列を検索する関数のリストは、このドキュメントの "概念" セクションにある "文字列操作" を参照してください。
例
以下の例は、部分文字列 'K' のすべてのインスタンスを検索し、それを部分文字列 'P' で置き換えます。
SELECT REPLACE('KING KONG','K','P')
以下の埋め込み SQL の例は、部分文字列 'KANSAS' のすべてのインスタンスを検索し、それを部分文字列 'NEBRASKA' で置き換えます。
SET str="KANSAS, ARKANSAS, NEBRASKA"
&sql(SELECT REPLACE(:str,'KANSAS','NEBRASKA') INTO :x)
WRITE !,"SQLCODE=",SQLCODE
WRITE !,"Output string=",x
以下の例は、REPLACE が他の文字列値と同様、空の文字列 (") を処理することを示しています。
SELECT REPLACE('','','Nothing'),
REPLACE('KING KONG','','P'),
REPLACE('KING KONG','K','')
以下の例は、REPLACE が NULL を返すことによって NULL 引数を処理していることを示しています。一致のない最後の例を含み、以下の REPLACE 関数すべてが NULL を返します。
SELECT REPLACE(NULL,'K','P'),
REPLACE(NULL,NULL,'P'),
REPLACE('KING KONG',NULL,'P'),
REPLACE('KING KONG','K',NULL),
REPLACE('KING KONG','Z',NULL)
以下の埋め込み SQL の例は、前述の NULL の例と同じです。ObjectScript の空文字列のホスト変数が、SQL 内で NULL として処理される方法を示しています。
SET a=""
&sql(SELECT
REPLACE(:a,'K','P'),
REPLACE(:a,:a,'P'),
REPLACE('KING KONG',:a,'P'),
REPLACE('KING KONG','K',:a),
REPLACE('KING KONG','Z',:a)
INTO :v,:w,:x,:y,:z)
WRITE !,"SQLCODE=",SQLCODE
WRITE !,"Output string=",v
WRITE !,"Output string=",w
WRITE !,"Output string=",x
WRITE !,"Output string=",y
WRITE !,"Output string=",z
関連項目
-
CHARINDEX 関数
-
$FIND 関数
-
STUFF 関数
-
$TRANSLATE 関数