Cómo encontrar una A disponible en AADBRFDT en Oracle SQL.
Hola a todos, estoy trabajando en SQL para ejecutar consultas complejas y encontré un problema en la consulta siguiente.
Tengo una entrada o una cadena que contiene el valor AANFEDSSAAAA.
Ahora quiero contar cuántas A hay disponibles en esta cadena.
He escrito un código como el siguiente, pero no puedo obtener el resultado deseado.
Longitud('AAABCDA') - LONGITUD(REEMPLAZAR('AAABCDA','A',''));
Cuando ejecuto esto, obtengo un error como el siguiente.
Error al iniciar en la línea : 109 en el comando -
Longitud('AAABCDA') - LONGITUD(REEMPLAZAR('AAABCDA','A',''))
Informe de error -
Comando desconocido
¿Cómo contar el número de A que está disponible en los ejemplos anteriores?
El mismo problema se puede resolver utilizando una expresión regular (RegExp) de la siguiente manera
SELECT REGEXP_COUNT ('AAABCDA', 'A') FROM dual;
Cuando ejecuto esto, obtengo un resultado como el siguiente.
4
Necesito ayuda con el primer código, ¿qué está mal con él y cuántas formas hay disponibles para obtener los resultados deseados?
¿Cómo podemos codificar manualmente en lugar de usar funciones incorporadas?
davy.ai
Respuesta
El problema con el primer código es que tiene un error de sintaxis. El carácter de apóstrofe utilizado para delimitar la cadena no es el carácter de apóstrofe estándar. Parece ser un carácter especial que está causando el error.
Para obtener el resultado deseado, hay algunas formas de contar el número de ocurrencias de un carácter en una cadena usando SQL:
REGEXP_COUNT
como se muestra en el ejemplo dado.SELECT REGEXP_COUNT('AAABCDA', 'A') FROM dual;
Usando las funciones
LENGTH
yREPLACE
juntas para contar el número de ocurrencias de un carácter en una cadena.SELECT LENGTH('AAABCDA') - LENGTH(REPLACE('AAABCDA', 'A', '')) as count FROM dual;
Manualmente, podemos iterar a través de cada carácter en la cadena y verificar si coincide con el carácter que estamos buscando, luego incrementar una variable contador. Sin embargo, usar las funciones integradas como
REGEXP_COUNT
oLENGTH
yREPLACE
es mucho más eficiente y más fácil de leer.