TOP

SQL-Lección 7. Funciones de procesamiento de datos

Como en la mayoría de los lenguajes de programación, SQL tiene funciones para procesar datos. Vale la pena señalar que, a diferencia de las declaraciones SQL, las funciones no están estandarizadas para todos los tipos de DBMS, es decir, para realizar las mismas operaciones con datos, diferentes DBMS tienen sus propios nombres de funciones. Esto significa que es posible que el código de consulta escrito en un DBMS no funcione en otro y esto debería tenerse en cuenta en el futuro. Esto se aplica principalmente a funciones para procesar valores de texto, convertir tipos de datos y manipular fechas.


La mayoría de los DBMS admiten un conjunto estándar de tipos de funciones, a saber:

  • Funciones de texto utilizadas para el procesamiento de texto (extraer parte de los caracteres del texto, determinar la longitud del texto, convertir caracteres a mayúsculas o minúsculas...);
  • Funciones numéricas. Se utilizan para realizar operaciones matemáticas sobre valores numéricos;
  • Funciones de fecha y hora (se realizan manipulaciones de fecha y hora, se calcula el período entre fechas, se comprueba la exactitud de las fechas, etc.);
  • Funciones estadísticas (para cálculo de valores máximos/mínimos, valores medios, cálculo de cantidad y suma...);
  • Funciones del sistema (proporciona varios tipos de información de servicio sobre DBMS, usuario, etc.).
  • 1. Funciones SQL para procesamiento de textos

    La implementación de SQL en MS Access tiene las siguientes funciones para el procesamiento de texto:

    Función Descripción
    Left() Selecciona los caracteres del texto desde la izquierda.
    Right() Selecciona los caracteres del texto de la derecha.
    Mid() Selecciona caracteres del medio del texto.
    UCase() Convierte caracteres a mayúsculas
    LCase() Convierte caracteres a minúsculas
    LTrim() Elimina todos los caracteres en blanco a la izquierda del texto.
    RTrim() Elimina todos los caracteres en blanco a la derecha del texto.
    Trim() Elimina todos los caracteres en blanco de ambos lados del texto.

    Convirtamos los nombres de los productos a mayúsculas usando la función UCase():

    Run SQLSELECT Product, UCase(Product) AS Product_UCase 
    FROM Sumproduct
    

    Separemos los primeros tres caracteres del texto usando la función LEFT():

    Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT 
    FROM Sumproduct
    

    2. Funciones SQL para procesar números

    Las funciones de procesamiento de números están diseñadas para realizar operaciones matemáticas con datos numéricos. Estas funciones están diseñadas para cálculos algebraicos y geométricos, por lo que se utilizan con mucha menos frecuencia que las funciones de procesamiento de fecha y hora. Sin embargo, las funciones numéricas son las más estandarizadas en todas las versiones de SQL. Veamos la lista de funciones numéricas:

    Función Descripción
    SQR() Devuelve la raíz cuadrada del número especificado
    ABS() Devuelve el valor absoluto de un número
    EXP() Devuelve el exponente del número especificado.
    SIN() Devuelve el seno del ángulo especificado.
    COS() Devuelve el coseno del ángulo especificado.
    TAN() Devuelve la tangente del ángulo especificado.

    Hemos enumerado solo algunas de las funciones principales, pero siempre puede consultar la documentación de su DBMS para obtener una lista completa de las funciones compatibles con descripciones detalladas.

    Por ejemplo, escribamos una consulta para obtener la raíz cuadrada de los números en la columna Cantidad usando la función SQR():

    Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR 
    FROM Sumproduct
    
    MySQL usa la función SQRT() para obtener la raíz cuadrada de un número.

    3. Funciones SQL para procesamiento de fecha y hora.

    Las funciones de manipulación de fecha y hora se encuentran entre las funciones SQL más importantes y utilizadas con más frecuencia. En las bases de datos, los valores de fecha y hora se almacenan en un formato especial, por lo que no se pueden utilizar directamente sin un procesamiento adicional. Cada DBMS tiene su propio conjunto de funciones para procesar fechas, lo que, lamentablemente, no permite transferirlas a otras plataformas e implementaciones de SQL.

    Lista de algunas funciones para manejar fecha y hora en MS Access:

    Función Descripción
    DatePart() Devuelve parte de una fecha: año, trimestre, mes, semana, día, hora, minuto, segundo
    Year(), Month() Devuelve el año y el mes respectivamente.
    Hour(), Minute(), Second() Devuelve la hora, minutos y segundos de la fecha especificada.
    WeekdayName() Devuelve el nombre del día de la semana.

    Veamos un ejemplo de cómo funciona la función DatePart():

    SELECT Date1, DatePart("m", Date1) AS Month1 
    FROM Sumproduct
    

    La función DatePart() tiene un parámetro adicional que nos permite mostrar la parte requerida de la fecha. En el ejemplo, usamos el valor del parámetro "m", que muestra el número del mes (de la misma manera, podemos mostrar el año - "yyyy", el trimestre - "q", el día - "d", la semana - "w", la hora - "h", minutos - "n", segundos - "s", etc.).

    4. Funciones estadísticas de SQL

    Las funciones estadísticas nos ayudan a preparar datos sin muestrearlos. Las consultas SQL con estas funciones se utilizan a menudo para analizar y generar varios informes. Un ejemplo de tales selecciones puede ser: determinar el número de filas en una tabla, obtener la suma de valores para un determinado campo, buscar el valor más grande/más pequeño o promedio en la columna especificada de la tabla. También observamos que las funciones estadísticas son compatibles con todos los DBMS sin ningún cambio especial por escrito.

    Lista de funciones estadísticas en DBMS Access:

    Función Descripción
    COUNT() Devuelve el número de filas de una tabla o columna.
    SUM() Devuelve la suma de los valores de una columna.
    MIN() Devuelve el valor más pequeño de una columna.
    MAX() Devuelve el valor más grande en una columna.
    AVG() Devuelve el valor promedio en una columna.

    4.1 Ejemplos de uso de la función COUNT()

    Devuelve el número de todas las filas de la tabla:

    Run SQLSELECT COUNT(*) AS Count1 
    FROM Sumproduct
    

    Devuelve el número de todas las filas no vacías en el campo Producto:

    SELECT COUNT(Product) AS Count2 
    FROM Sumproduct
    

    Eliminamos intencionalmente un valor en la columna Producto para mostrar la diferencia de rendimiento entre las dos consultas.

    4.2 Ejemplos de uso de la función SUM()

    Run SQLSELECT SUM(Quantity) AS Sum1 
    FROM Sumproduct 
    WHERE Month = 'April'
    

    Con esta solicitud, mostramos la cantidad total de bienes vendidos en el mes de abril.

    Run SQLSELECT SUM(Quantity*Amount) AS Sum2 
    FROM Sumproduct
    

    Como puedes ver, en funciones estadísticas también podemos realizar cálculos en varias columnas utilizando operadores matemáticos estándar.

    4.3 Ejemplo de uso de la función MIN()

    Run SQLSELECT MIN(Amount) AS Min1 
    FROM Sumproduct
    

    4.4 Ejemplo de uso de la función MAX()

    Run SQLSELECT MAX(Amount) AS Max1 
    FROM Sumproduct
    

    4.5 Ejemplo de uso de la función AVG()

    Run SQLSELECT AVG(Amount) AS Avg1
    FROM Sumproduct