es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  ,

Answer

  1. Avatar for 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:

    1. Usando la función REGEXP_COUNT como se muestra en el ejemplo dado.

      SELECT REGEXP_COUNT('AAABCDA', 'A') FROM dual;

    2. Usando las funciones LENGTH y REPLACE 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 o LENGTH y REPLACE es mucho más eficiente y más fácil de leer.

Comments are closed.