如何在使用大小写转换快捷方式时不影响字符串

如何在使用大小写转换快捷方式时不影响字符串

我使用 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

屏幕截图:

在此处输入图片描述

相关内容