だからあなたが尋ねたように。私の提案は通過することですregular expressions
。これがあなたのケースの更新コードです。
フィールド アドレスを含むテーブル テストがあるとします。必要なことは非常に簡単で、要件に一致する正規表現を作成します。
St
だから:すべてを置き換える必要がStreet
ありAv
、Avenue
これがあなたがすべきことです。
update test
set address =
regexp_replace(
regexp_replace(address, 'Av | Av$| Av ', ' Avenue ' ),
'St | St$| St ', ' Street ');
SQLFiddle の例を次に示します。
正規表現の説明:
regexp_replace
正規表現パターンに基づいて文字列を別の文字列に置き換えます。ドキュメントを参照してください: REGEXP_REPLACE
正規表現については、ここで確認できます。正規表現 Wikiほぼすべての言語がPOSIX
パターンに従っているので、一度学べば上手になります。
regexp_replace
あなたが2つの要件を与えたので、私はあなたが望むものを達成するのに慣れていました。関数のパラメータについては書きません。式だけです。
最初の式で、これは次のこと'Av | Av$| Av '
を意味します: PS .:-
スペースが見えるように を置きます (無視してください)。だから入れさせてくれません。
-Av -
(末尾にスペースあり) =Av
文字列の後ろにスペースがあるもの
をすべて検索-|-
or
(パイプ記号) =ステートメント
に等しい- Av$-
=Av
前にスペースAv
があり、文字列の最後にある場合はすべて検索します。$
- Av -
Av
=前後にスペースがあるすべてを検索
次に、関数はこれらの出現のいずれかを単語に置き換えますAvenue
。次のようなことを避けるために、前後にスペースを入れていることに注意してくださいPeer HarborAvenue
同じ説明がSt
文字列にも当てはまります
正規表現関数が気に入った場合は、ここで詳細を確認できます: Oracle 正規表現関数