Utilizo Oracle SQL Developer para ejecutar consultas. Desearía que el acceso directo "Convertir a minúsculas" no afectara el texto dentro de los 'apóstrofes'.
Notepad++ es mucho más agradable a la vista, por lo que la consulta se escribe allí y luego se copia y pega en Oracle. Mapeé todos los atajos que solía usar en Oracle a N++, pero las cadenas ahora también se están convirtiendo a minúsculas.
¿Hay alguna manera de parar esto?
Ejemplo:
CASE
WHEN table.attribute = 'CaseSensitiveStringValue'
THEN 'OutcomeValue'
ELSE 'OTHERValue'
END AS CASEName
Cuando se convierte a todo en minúsculas, SQL Developer se verá así:
case
when table.attribute = 'CaseSensitiveStringValue'
then 'OutcomeValue'
else 'OTHERValue'
end as casename
Observe que las cadenas no se vieron afectadas por la conversión. En Notepad++ el resultado de la conversión a minúsculas es el siguiente:
case
when table.attribute = 'casesensitivestringvalue'
then 'outcomevalue'
else 'othervalue'
end as casename
Observe que todo el texto, incluidas las cadenas, ahora está en minúsculas. Esto rompería el código si el valor distingue entre mayúsculas y minúsculas.
Respuesta1
Usando la función Buscar y reemplazar en Notepad++:
- Ctrl+H
- Encontrar que:
'[^']+'(*SKIP)(*FAIL)|\w+
- Reemplazar con:
\L$0
- comprobar Envolver alrededor
- comprobar expresión regular
- Replace all
Explicación:
'[^']+' # 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
Reemplazo:
\L$0 # lowercase the whole match (i.e. the string NOT between quotes)
Resultado para el ejemplo dado:
case
when table.attribute = 'CaseSensitiveStringValue'
then 'OutcomeValue'
else 'OTHERValue'
end as casename
La captura de pantalla: