REPLACE - 文字列の置換

REPLACE 関数は、入力文字列に存在する検索文字列のインスタンスすべてを特定の文字列に置換します。出力は常に可変長文字フォーマットで返され、長さは入力パラメータに基づいて決定されます。

文字列のすべてのインスタンスを置換

REPLACE(input_string , search_string , replacement)

説明

input_string

文字またはテキスト (An、AnV、TX)

入力文字列です。

search_string

文字またはテキスト (An、AnV、TX)

入力文字列内で検索する文字列です。

replacement

文字またはテキスト (An、AnV、TX)

検索文字列を置換する文字列です。NULL 文字列 (") を指定することもできます。

文字列の置換

次の REPLACE 関数は、国名の「SOUTH」という文字列を「S.」に置換します。

SET TRACEUSER = ON 
SET TRACEON = STMTRACE//CLIENT
SET TRACESTAMP=OFF
DEFINE FILE WF_RETAIL_LITE
NEWNAME/A20 = REPLACE(COUNTRY_NAME, 'SOUTH', 'S.');
END
TABLE FILE WF_RETAIL_LITE
SUM COUNTRY_NAME
BY NEWNAME AS 'New,Name'
WHERE COUNTRY_NAME LIKE 'S%'
ON TABLE SET PAGE NOLEAD
END

次の SQL が生成され、この SQL で REPLACE 関数が DBMS REPLACE 関数に渡されます。

SELECT   
REPLACE(T3."COUNTRY_NAME",'SOUTH','S.'),  
MAX(T3."COUNTRY_NAME")  
FROM   
wrd_wf_retail_geography T3  
WHERE   
(T3."COUNTRY_NAME" LIKE 'S%')  
GROUP BY   
REPLACE(T3."COUNTRY_NAME",'SOUTH','S.')  
ORDER BY   
REPLACE(T3."COUNTRY_NAME",'SOUTH','S.'); 

下図は、出力結果を示しています。

文字列のすべてのインスタンスを置換

次のリクエストでは、DAY1 で文字列が定義され、「DAY」という文字列のインスタンスがすべて「day」という文字列に置換された上で、一時項目 (DEFINE) の DAYNAME1 に格納されます。一時項目 (DEFINE) の DAYNAME2 には、「DAY」という文字列のインスタンスがすべて削除された後の文字列が格納されます。

DEFINE FILE WF_RETAILLITE
DAY1/A30 = 'SUNDAY MONDAY TUESDAY';
DAYNAME1/A30 = REPLACE(DAY1, 'DAY', 'day' );
DAYNAME2/A30 = REPLACE(DAY1, 'DAY', '' );
END
TABLE FILE WF_RETAILLITE
PRINT DAY1 OVER
DAYNAME1 OVER
DAYNAME2
WHERE EMPLOYEE_NUMBER EQ 'AH118' 
ON TABLE SET PAGE NOPAGE
END

出力結果は次のとおりです。

  DAY1      SUNDAY MONDAY TUESDAY         
  DAYNAME1  SUNday MONday TUESday         
  DAYNAME2  SUN MON TUES