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