Я использую 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
Скриншот: