Preguntado hace 1 año
Gabriel Molina
Hola, quiero escribir un filtro a un campo de texto que me devuelva sólo los registros que contengan en ese campo más de "n" mayúsculas.
La aproximación que nos planteamos es crear una función dameNumeroMayusculas(varchar cadenaOriginal). Que tenga una constante con el valor de todas las mayúsculas "ABCDEFGHIJ..." y que se recorra caracter por caracter para ver si está contenido en la constante e irlos contando para finalmente devolver ese contador.
Luego la consulta sería algo así
select * from Tabla1 where dameNumeroMayusculas(campo1) > @maximoMayusculas;
No parece muy óptimo :S ¿Se os ocurre una opción mejor?
Un saludo a todos.
Hace 1 año
Ricardo González
Hola Gabriel,
Lo de utilizar una función me parece muy buena idea, pero yo en vez de recorrer la constante y el valor del campo, recorrería unicamente caracter por caracter el valor del campo y compararía su valor ASCII para que estuviera entre ASCII('A') y ASCII('Z').
Algo así sería:
for i in 1..length(texto) loop valor:=ASCII(substr(campo1,i,i+1)); if (valor>valorA and valor<valorZ) then cantidad:=cantidad+1; end if; end loop;
Saludos,
Ricardo
Fernandoflorido
dateNumeroMayusculas() no te sirve para nada, mejor hacer un solo recorrido, necesario, crear una tabla 2x2 donde cuentes el numero de veces que aparece cada caracter, y luego ajustas cuentas.
Si sales ahora, perderás los cambios. ¿Estás seguro de querer salir?
Para participar en Babelias, debes estar convenientemente validado. Si ya eres usuario inicia sesión, si no lo eres, te puedes registrar.
Trata de ser descriptivo, usa al menos 25 caracteres
LLeva tu prestigio a tu página o blog, con el widget de Babelias
Usuario de ejemplo