Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

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

関連項目

FeedbackOpens in a new tab