11 Lenguaje SQL: Funciones
Si consideramos que MySQL es rico en lo que respecta a operadores, en lo que se refiere a funciones, podemos considerarlo millonario. MySQL dispone de multitud de funciones.
Pero no las explicaremos aquí, ya que este curso incluye una referencia completa. Tan sólo las agruparemos por tipos, e incluiremos los enlaces correspondientes a la documentación de cada una.
Funciones de control de flujo
Las funciones de esta categoría son:
| IF | Elección en función de una expresión booleana |
| IFNULL | Elección en función de si el valor de una expresión es NULL |
| NULLIF | Devuelve NULL en función del valor de una expresión |
Funciones matemáticas
Las funciones de la categoría de matemáticas son:
| ABS | Devuelve el valor absoluto |
| ACOS | Devuelve el arcocoseno |
| ASIN | Devuelve el arcoseno |
| ATAN y ATAN2 | Devuelven el arcotangente |
| CEILING y CEIL | Redondeo hacia arriba |
| COS | Coseno de un ángulo |
| COT | Cotangente de un ángulo |
| CRC32 | Cálculo de comprobación de redundancia cíclica |
| DEGREES | Conversión de grados a radianes |
| EXP | Cálculo de potencias de e |
| FLOOR | Redondeo hacia abajo |
| LN | Logaritmo natural |
| LOG | Logaritmo en base arbitraria |
| LOG10 | Logaritmo en base 10 |
| LOG2 | Logaritmo en base dos |
| MOD o % | Resto de una división entera |
| PI | Valor del número π |
| POW o POWER | Valor de potencias |
| RADIANS | Conversión de radianes a grados |
| RAND | Valores aleatorios |
| ROUND | Cálculo de redondeos |
| SIGN | Devuelve el signo |
| SIN | Cálculo del seno de un ángulo |
| SQRT | Cálculo de la raíz cuadrada |
| TAN | Cálculo de la tangente de un ángulo |
| TRUNCATE | Elimina decimales |
Funciones de cadenas
Las funciones para tratamiento de cadenas de caracteres son:
| ASCII | Valor de código ASCII de un carácter |
| BIN | Converión a binario |
| BIT_LENGTH | Cálculo de longitud de cadena en bits |
| CHAR | Convierte de ASCII a carácter |
| CHAR_LENGTH o CHARACTER_LENGTH | Cálculo de longitud de cadena en caracteres |
| COMPRESS | Comprime una cadena de caracteres |
| CONCAT | Concatena dos cadenas de caracteres |
| CONCAT_WS | Concatena cadenas con separadores |
| CONV | Convierte números entre distintas bases |
| ELT | Elección entre varias cadenas |
| EXPORT_SET | Expresiones binarias como conjuntos |
| FIELD | Busca el índice en listas de cadenas |
| FIND_IN_SET | Búsqueda en listas de cadenas |
| HEX | Conversión de números a hexadecimal |
| INSERT | Inserta una cadena en otra |
| INSTR | Busca una cadena en otra |
| LEFT | Extraer parte izquierda de una cadena |
| LENGTH u OCTET_LENGTH | Calcula la longitud de una cadena en bytes |
| LOAD_FILE | Lee un fichero en una cadena |
| LOCATE o POSITION | Encontrar la posición de una cadena dentro de otra |
| LOWER o LCASE | Convierte una cadena a minúsculas |
| LPAD | Añade caracteres a la izquierda de una cadena |
| LTRIM | Elimina espacios a la izquierda de una cadena |
| MAKE_SET | Crea un conjunto a partir de una expresión binaria |
| OCT | Convierte un número a octal |
| ORD | Obtiene el código ASCII, incluso con caracteres multibyte |
| QUOTE | Entrecomilla una cadena |
| REPEAT | Construye una cadena como una repetición de otra |
| REPLACE | Busca una secuencia en una cadena y la sustituye por otra |
| REVERSE | Invierte el orden de los caracteres de una cadena |
| RIGHT | Devuelve la parte derecha de una cadena |
| RPAD | Inserta caracteres al final de una cadena |
| RTRIM | Elimina caracteres blancos a la derecha de una cadena |
| SOUNDEX | Devuelve la cadena "soundex" para una cadena concreta |
| SOUNDS LIKE | Compara cadenas según su pronunciación |
| SPACE | Devuelve cadenas consistentes en espacios |
| SUBSTRING o MID | Extraer subcadenas de una cadena |
| SUBSTRING_INDEX | Extraer subcadenas en función de delimitadores |
| TRIM | Elimina sufijos y/o prefijos de una cadena. |
| UCASE o UPPER | Convierte una cadena a mayúsculas |
| UNCOMPRESS | Descomprime una cadena comprimida mediante COMPRESS |
| UNCOMPRESSED_LENGTH | Calcula la longitud original de una cadena comprimida |
| UNHEX | Convierte una cadena que representa un número hexadecimal a cadena de caracteres |
Funciones de comparación de cadenas
Además de los operadores que vimos para la comparación de cadenas, existe una función:
| STRCMP | Compara cadenas |
Funciones de fecha
Funciones para trabajar con fechas:
| ADDDATE | Suma un intervalo de tiempo a una fecha |
| ADDTIME | Suma tiempos |
| CONVERT_TZ | Convierte tiempos entre distintas zonas horarias |
| CURDATE o CURRENTDATE | Obtener la fecha actual |
| CURTIME o CURRENT_TIME | Obtener la hora actual |
| DATE | Extraer la parte correspondiente a la fecha |
| DATEDIFF | Calcula la diferencia en días entre dos fechas |
| DATE_ADD | Aritmética de fechas, suma un intervalo de tiempo |
| DATE_SUB | Aritmética de fechas, resta un intervalo de tiempo |
| DATE_FORMAT | Formatea el valor de una fecha |
| DAY o DAYOFMONTH | Obtiene el día del mes a partir de una fecha |
| DAYNAME | Devuelve el nombre del día de la semana |
| DAYOFWEEK | Devuelve el índice del día de la semana |
| DAYOFYEAR | Devuelve el día del año para una fecha |
| EXTRACT | Extrae parte de una fecha |
| FROM_DAYS | Obtener una fecha a partir de un número de días |
| FROM_UNIXTIME | Representación de fechas UNIX en formato de cadena |
| GET_FORMAT | Devuelve una cadena de formato |
| HOUR | Extrae la hora de un valor time |
| LAST_DAY | Devuelve la fecha para el último día del mes de una fecha |
| MAKEDATE | Calcula una fecha a partir de un año y un día del año |
| MAKETIME | Calcula un valor de tiempo a partir de una hora, minuto y segundo |
| MICROSECOND | Extrae los microsegundos de una expresión de fecha/hora o de hora |
| MINUTE | Extrae el valor de minutos de una expresión time |
| MONTH | Devuelve el mes de una fecha |
| MONTHNAME | Devuelve el nombre de un mes para una fecha |
| NOW o CURRENT_TIMESTAMP o LOCALTIME o LOCALTIMESTAMP o SYSDATE | Devuelve la fecha y hora actual |
| PERIOD_ADD | Añade meses a un periodo (año/mes) |
| PERIOD_DIFF | Calcula la diferencia de meses entre dos periodos (año/mes) |
| QUARTER | Devuelve el cuarto del año para una fecha |
| SECOND | Extrae el valor de segundos de una expresión time |
| SEC_TO_TIME | Convierte una cantidad de segundos a horas, minutos y segundos |
| STR_TO_DATE | Obtiene un valor DATETIME a partir de una cadena con una fecha y una cadena de formato |
| SUBDATE | Resta un intervalo de tiempo de una fecha |
| SUBTIME | Resta dos expresiones time |
| TIME | Extrae la parte de la hora de una expresión fecha/hora |
| TIMEDIFF | Devuelve en tiempo entre dos expresiones de tiempo |
| TIMESTAMP | Convierte una expresión de fecha en fecha/hora o suma un tiempo a una fecha |
| TIMESTAMPADD | Suma un intervalo de tiempo a una expresión de fecha/hora |
| TIMESTAMPDIFF | Devuelve la diferencia entre dos expresiones de fecha/hora |
| TIME_FORMAT | Formatea un tiempo |
| TIME_TO_SEC | Convierte un tiempo a segundos |
| TO_DAYS | Calcula el número de días desde el año cero |
| UNIX_TIMESTAMP | Devuelve un timestamp o una fecha en formato UNIX, segundos desde 1070 |
| UTC_DATE | Devuelve la fecha UTC actual |
| UTC_TIME | Devuelve la hora UTC actual |
| UTC_TIMESTAMP | Devuelve la fecha y hora UTC actual |
| WEEK | Calcula el número de semana para una fecha |
| WEEKDAY | Devuelve el número de día de la semana para una fecha |
| WEEKOFYEAR | Devuelve el número de la semana del año para una fecha |
| YEAR | Extrae el año de una fecha |
| YEARWEEK | Devuelve el año y semana de una fecha |
De búsqueda de texto
Función de búsqueda de texto:
Funciones de casting (conversión de tipos)
| CAST o CONVERT | Conversión de tipos explícita |
Funciones de encripdado
Funciones de encriptado de datos y de checksum:
| AES_ENCRYPT y AES_DECRYPT | Encriptar y desencriptar datos usando el algoritmo oficial AES |
| DECODE | Desencripta una cadena usando una contraseña |
| ENCODE | Encripta una cadena usando una contraseña |
| DES_DECRYPT | Desencripta usando el algoritmo Triple-DES |
| DES_ENCRYPT | Encripta usando el algoritmo Triple-DES |
| ENCRYPT | Encripta str usando la llamada del sistema Unix crypt() |
| MD5 | Calcula un checksum MD5 de 128 bits para la cadena string |
| PASSWORD u OLD_PASSWORD | Calcula una cadena contraseña a partir de la cadena en texto plano |
| SHA o SHA1 | Calcula un checksum SHA1 de 160 bits para una cadena |
Funciones de información
Información sobre el sistema:
| BENCHMARK | Ejecuta una expresión varias veces |
| CHARSET | Devuelve el conjunto de caracteres de una cadena |
| COERCIBILITY | Devuelve el valor de restricción de colección de una cadena |
| COLLATION | Devuelve la colección para el conjunto de caracteres de una cadena |
| CONNECTION_ID | Devuelve el ID de una conexión |
| CURRENT_USER | Devuelve el nombre de usuario y el del host para la conexión actual |
| DATABASE | Devuelve el nombre de la base de datos actual |
| FOUND_ROWS | Calcular cuántas filas se hubiesen obtenido en una sentencia SELECT sin la cláusula LIMIT |
| LAST_INSERT_ID | Devuelve el último valor generado automáticamente para una columna AUTO_INCREMENT |
| USER o SESSION_USER o SYSTEM_USER | Devuelve el nombre de usuario y host actual de MySQL |
| VERSION | Devuelve la versión del servidor MySQL |
Miscelanea
Funciones generales:
| DEFAULT | Devuelve el valor por defecto para una columna |
| FORMAT | Formatea el número según la plantilla '#,###,###.## |
| GET_LOCK | Intenta obtener un bloqueo con el nombre dado |
| INET_ATON | Obtiene el entero equivalente a la dirección de red dada en formato de cuarteto con puntos |
| INET_NTOA | Obtiene la dirección en formato de cuarteto con puntos dado un entero |
| IS_FREE_LOCK | Verifica si un nombre de bloqueo está libre |
| IS_USED_LOCK | Verifica si un nombre de bloqueo está en uso |
| MASTER_POS_WAIT | Espera hasta que el esclavo alcanza la posición especificada en el diario maestro |
| RELEASE_LOCK | Libera un bloqueo |
| UUID | Devuelve un identificador único universal |
De grupos
Funciones de grupos:
| AVG | Devuelve el valor medio |
| BIT_AND | Devuelve la operación de bits AND para todos los bits de una expresión |
| BIT_OR | Devuelve la operación de bits OR para todos los bits de una expresión |
| BIT_XOR | Devuelve la operación de bits XOR para todos los bits de una expresión |
| COUNT | Devuelve el número de valores distintos de NULL en las filas recuperadas por una sentencia SELECT |
| COUNT DISTINCT | Devuelve el número de valores diferentes, distintos de NULL |
| GROUP_CONCAT | Devuelve una cadena con la concatenación de los valores de un grupo |
| MIN | Devuelve el valor mínimo de una expresión |
| MAX | Devuelve el valor máximo de una expresión |
| STD o STDDEV | Devuelve la desviación estándar de una expresión |
| SUM | Devuelve la suma de una expresión |
| VARIANCE | Devuelve la varianza estándar de una expresión |