Cómo no afectar las cadenas cuando se utiliza un atajo de conversión de mayúsculas y minúsculas

Cómo no afectar las cadenas cuando se utiliza un atajo de conversión de mayúsculas y minúsculas

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:

ingrese la descripción de la imagen aquí

información relacionada