我使用 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
屏幕截图: