私は Oracle SQL Developer を使用してクエリを実行します。「小文字に変換」ショートカットが「アポストロフィ」内のテキストに影響を与えないようにしたいと思います。
Notepad++ の方がはるかに見やすいので、クエリをそこに記述してから、Oracle にコピーして貼り付けます。Oracle で使用していたショートカットをすべて N++ にマッピングしましたが、文字列も小文字に変換されるようになりました。
これを止める方法はあるでしょうか?
例:
CASE
WHEN table.attribute = 'CaseSensitiveStringValue'
THEN 'OutcomeValue'
ELSE 'OTHERValue'
END AS CASEName
すべて小文字に変換すると、SQL Developer は次のようになります。
case
when table.attribute = 'CaseSensitiveStringValue'
then 'OutcomeValue'
else 'OTHERValue'
end as casename
文字列は変換の影響を受けていないことに注意してください。Notepad++ では、小文字への変換の結果は次のようになります。
case
when table.attribute = 'casesensitivestringvalue'
then 'outcomevalue'
else 'othervalue'
end as casename
文字列を含むすべてのテキストが小文字になっていることに注意してください。値が大文字と小文字を区別する場合、これによりコードが壊れます。
答え1
Notepad++ の検索と置換機能を使用する:
- Ctrl+H
- 検索対象:
'[^']+'(*SKIP)(*FAIL)|\w+
- と置換する:
\L$0
- チェック ラップアラウンド
- 正規表現をチェック
- Replace all
説明:
'[^']+' # NOt a single quote between 2 single quote (i.e. strings we don't want to convert)
(*SKIP) # skip this string
(*FAIL) # fail to match
| # OR
\w+ # 1 or more word character
交換:
\L$0 # lowercase the whole match (i.e. the string NOT between quotes)
与えられた例の結果:
case
when table.attribute = 'CaseSensitiveStringValue'
then 'OutcomeValue'
else 'OTHERValue'
end as casename
画面キャプチャ: