我使用 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
螢幕截圖: