13.12 CHANGE
構文
C[HANGE] sepchar old [sepchar [new [sepchar]]]
バッファ内のカレント行で最初に一致した文字列を変更します。
項
sepchar
「/」や「!」など英数字以外の文字を指定します。sepcharには、oldまたはnewに使用されていない文字を使用します。
old
変更するテキストを指定します。CHANGEでは、oldを検索する際に大文字と小文字の区別は無視されます。たとえば、
CHANGE /aq/aw
「aq」、「AQ」、「aQ」、「Aq」と最初に一致した文字列が検索され、それが「aw」に変更されます。SQL*Plusは、newテキストをユーザーが指定したとおりに挿入します。
oldの前に「...」を付けた場合、それはoldと最初に一致した文字列に達するまでのすべてのもの(最初に一致した文字列を含む)を意味します。oldの後に「...」を付けた場合は、oldと最初に一致した文字列とそこから行末までのすべてのものを意味します。途中に「...」を含めた場合は、oldより前の部分からoldから後の部分までのすべてのものが該当します。
new
oldと置換するテキストを指定します。newと、オプションの2番目および3番目のsepcharsを省略した場合、CHANGEは、バッファのカレント行からoldを削除します。
使用方法
CHANGEは、バッファのカレント行の上で、指定された既存の最初に一致した文字列を、指定された新しいテキストに変更します。LIST出力では、カレント行にはアスタリスク(*)によってマークが設定されています。
CHANGEを使用して、Oracle Databaseエラーの原因となったバッファ内の行を変更することもできます。SQL*Plusは、エラーがある行をバッファのカレント行に設定するので、それを変更できます。
1つの行全体を入力しなおすには、行番号を入力し、続いてその行の新しい内容を入力します。バッファ内の行数より大きい行番号を指定し、その後にテキストを続けた場合、SQL*Plusは、バッファの終わりに新しい行を追加して、そこにそのテキストを入れます。行番号として0(ゼロ)を指定し、その後にテキストを入力した場合、SQL*Plusは、バッファの先頭にその行を挿入します(その行が行1になります)。
例
3を入力し、バッファのカレント行に次のテキストが含まれていることを確認します。
3
3* WHERE JOB_ID IS IN ('CLERK', 'SA_MAN')
次のコマンドを入力します。
CHANGE /CLERK/SH_CLERK/
バッファ内のテキストは、次のように変更されます。
3* WHERE JOB_ID IS IN ('SH_CLERK', 'SA_MAN')
または、次のコマンドを入力します。
CHANGE /'CLERK',... /'SH_CLERK'/
元の行は、次のように変更されます。
3* WHERE JOB_ID IS IN ('SH_CLERK')
または、次のコマンドを入力します。
CHANGE /(...)/('SA_MAN')/
元の行は、次のように変更されます。
3* WHERE JOB_ID IS IN ('SA_MAN')
行番号を使用して、行全体の内容を置換できます。たとえば、次のように入力したとします。
3 WHERE JOB_ID IS IN ('SH_CLERK')
バッファの2番目の行が次のように置換されます。
WHERE JOB_ID IS IN ('SH_CLERK')
行番号に続けて文字列を入力すると、その行番号の後にどのようなテキストがあってもすべて置換されます。たとえば、
2 CHANGE/OLD/NEW/
バッファの2番目の行が次のように変更されます。
2* CHANGE/OLD/NEW/