Eu uso o Oracle SQL Developer para executar consultas. gostaria que o atalho "Converter para minúsculas" não afetasse o texto entre os 'apóstrofos'.
O Notepad++ é muito mais agradável aos olhos, então a consulta é escrita lá e depois copiada e colada no Oracle. Mapeei todos os atalhos que costumava usar no Oracle para N++, mas as strings agora também estão sendo convertidas para minúsculas.
Há alguma maneira para parar isso?
Exemplo:
CASE
WHEN table.attribute = 'CaseSensitiveStringValue'
THEN 'OutcomeValue'
ELSE 'OTHERValue'
END AS CASEName
Quando convertido para letras minúsculas, o SQL Developer ficará assim:
case
when table.attribute = 'CaseSensitiveStringValue'
then 'OutcomeValue'
else 'OTHERValue'
end as casename
Observe que as strings não foram afetadas pela conversão. No Notepad++ o resultado da conversão para minúsculas é o seguinte:
case
when table.attribute = 'casesensitivestringvalue'
then 'outcomevalue'
else 'othervalue'
end as casename
Observe que todo o texto, incluindo strings, agora está em letras minúsculas. Isso quebraria o código se o valor diferenciasse maiúsculas de minúsculas.
Responder1
Usando o recurso Localizar e Substituir no Notepad++:
- Ctrl+H
- Encontre o que:
'[^']+'(*SKIP)(*FAIL)|\w+
- Substituir com:
\L$0
- confira Envolver
- verifique expressão regular
- Replace all
Explicação:
'[^']+' # 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
Substituição:
\L$0 # lowercase the whole match (i.e. the string NOT between quotes)
Resultado para determinado exemplo:
case
when table.attribute = 'CaseSensitiveStringValue'
then 'OutcomeValue'
else 'OTHERValue'
end as casename
Captura de tela: