Funciones escalares integradas en SQL
Una función puede definirse como un conjunto de instrucciones que realiza una tarea determinada de manera automática, pudiendo ser invocadas dentro de las instrucciones SQL. Las Funciones integradas son aquellas funciones propias del sistema, ya definidas por SQL Server.
Las funciones escalares operan con un valor y devuelven otro. Existen diferentes tipos de funciones escalares:
Funciones de configuración
Devuelven información referente a las opciones de configuración actuales. @@OPTIONS
, @@LANGUAGE
, @@SERVERNAME
o @@VERSION
son algunos ejemplos de funciones de configuración.
Funciones de conversión
Se encargan de convertir un tipo de dato a otro. Entre este tipo de funciones destacan las siguientes:
- CAST(): función estándar ANSI-SQL que convierte un valor de un tipo de dato a un tipo de dato distinto:
SELECT CAST(21.15 AS int);
La siguiente ejecución devolverá 21. Al ser convertido el valor a int
, un tipo numérico entero, este no permite decimales.
- CONVERT(): función específica y propia de SQL Server que convierte un valor de un tipo de dato a un tipo de dato distinto:
SELECT CONVERT(int, 21.15);
La siguiente ejecución devolverá 21. A nivel práctico, ambas funciones comparten la misma funcionalidad.
Cuando convertimos tipos de datos de fecha y hora, es posible aplicar formatos específicos en la conversión a través de un nuevo parámetro:
DECLARE @fecha DATE = '2022-10-02';
Select CONVERT(VARCHAR, @fecha, 1) as [FORMATO MM/DD/YY]
El resultado de la ejecución será: 10/02/22
DECLARE @fecha DATE = '2022-10-02';
Select CONVERT(VARCHAR, @fecha, 2) as [FORMATO YY.MM.DD]
El resultado de la ejecución será: 22.10.02
Para conocer el valor de todos los parámetros y el formato aplicable a la fecha y hora, acceder a la documentación de Microsoft
- PARSE(): función encargada de convertir valores de tipo cadena, a tipo de datos numéricos o de fecha/hora:
SELECT PARSE ('27 de septiembre de 2022' AS DATE );
La siguiente ejecución devolvería: 2022-09-27
Funciones de cursor
Estas funciones devuelven información sobre cursores como @@CURSOR_ROWS
, @@FETCH_STATUS
o CURSOR_STATUS
.
Funciones de fecha y hora
Estas funciones operan sobre valores de fecha y/o hora y devuelven un valor numérico, de cadena o de fecha y/o hora.
- SYSDATETIME(): función que devuelve la fecha y la hora del equipo donde se ejecuta SQL Server.
SELECT SYSDATETIME() AS sysdatetime;
- GETDATE(): función que devuelve la fecha y hora actual del sistema de la base de datos, en formato YYYY-MM-DD hh:mm:ss.mmm.
SELECT GETDATE() AS getdate;
- DAY(): función que devuelve la parte del día de la fecha especificada como parámetro de entrada.
SELECT DAY('2022-09-27');
El resultado de la ejecución será: 27
- MONTH(): función que devuelve la parte del mes de la fecha especificada como parámetro de entrada.
SELECT MONTH('2022-09-27');
El resultado de la ejecución será: 09.
- YEAR(): función que devuelve la parte del año de la fecha especificada como parámetro de entrada.
SELECT YEAR('2022-09-27');
El resultado de la ejecución será: 2022
- ISDATE(): Función encargada de validar el valor de una fecha. Si la fecha es válida devolverá 1, si no, devolverá 0.
SELECT ISDATE('2022-09-02 21:44:54');
El resultado de la ejecución será: 1.
- DATEDIFF(): Función encargada de devolver la diferencia entre dos fechas, siendo el primer parámetro, el intervalo entre ambas (
YEAR
,MONTH
,DAY
…)
SELECT DATEDIFF(YEAR, '2022-01-01', '2020-12-15');
El resultado de la ejecución será: -2.
Funciones de Graph
Funciones específicas para la conversión de caracteres de los identificadores de nodo y borde del grafo. GRAPH_ID_FROM_EDGE_ID
o NODE_ID_FROM_PARTS
serían algunos ejemplos de este tipo de funciones.
Funciones JSON
Funciones específicas encargadas de la validación, consulta o modificación de datos JSON. JSON_VALUE
, JSON_QUERY
o JSON_MODIFY
son algunos ejemplos de este tipo de funciones.
Funciones lógicas
Funciones encargadas de realizar operaciones lógicas.
- CHOOSE(): función que devuelve un elemento especificado de una lista de valores a través de un índice.
SELECT CHOOSE ( 2, 'Enrique', 'Juán', 'Ana', 'Verónica' ) AS nombre;
El resultado de la ejecución devolverá: Juán.
- IIF: función encargada de validar una expresión y devolver un resultado booleano
TRUE
oFALSE
.
DECLARE @a INT = 10, @b INT = 5;
SELECT [Result] = IIF( @a > @b, 'TRUE', 'FALSE' );
Al cumplirse la condición, el resultado de la ejecución devolverá: TRUE
.
Funciones matemáticas
Funciones que realizan cálculos matemáticos y devuelven valores numéricos.
- ABS(): función encargada de devolver el valor absoluto positivo de acuerdo al valor numérico recibido como parámetro de entrada.
SELECT ABS(-10) AS absoluto;
El resultado de la ejecución devolverá: 10
- RAND(): función encargada de devolver un valor numérico
float
pseudoaleatorio de 0 a 1 (ambos excluidos).
SELECT RAND() AS aleatorio;
El resultado de la ejecución será diferente en cada ejecución.
- ROUND(): función que devuelve un valor numérico redondeado a la precisión especificada.
SELECT ROUND(15.995, 2) AS redondeo;
El resultado de la ejecución será: 16.
Funciones de metadatos
Funciones que devuelven información de las bases de datos y los objetos que contiene. DB_NAME
, COL_LENGTH
o OBJECT_ID
son algún ejemplo de funciones de metadatos.
Funciones de seguridad
Funciones que informan acerca de roles y usuarios para la administración de la seguridad. PERMISSIONS
, SESSION_USER
, USER_ID
son algunos ejemplos de funciones de seguridad.
Funciones del sistema
Funciones que devuelven información acerca de las instancias de SQL Server.
Funciones estadísticas del sistema
Funciones que devuelven información estadística del sistema. @@CONNECTIONS
, @@TOTAL_ERRORS
o @@TOTAL_WRITE
son algunos ejemplos de funciones estadísticas del sistema.
Funciones de texto e imagen
funciones que reciben como parámetros de entrada columnas de texto o imágenes y devuelven información acerca del valor de las operaciones realizadas. TEXTPTR
y TESTVALID
son ejemplos de funciones de texto e imagen.
Funciones de cadena
Funciones que reciben normalmente un valor de cadena de entrada y devuelven un valor de cadena o un valor numérico:
- CHAR(): función que devuelve un carácter de un byte basado en el código ASCII.
SELECT CHAR(80) AS caracter1, CHAR(49) AS caracter2;
El resultado de la ejecución devolverá P para caracter1
y 1 para caracter2
- CONCAT(): función que concatena dos o más cadenas.
SELECT CONCAT ('Paula ', ' tiene ', 12, ' años') AS concatenación;
El resultado de la ejecución será un valor único: Paula tiene 12 años.
- FORMAT: función que permite aplicar máscaras de entrada para aplicar y devolver valores fecha/hora con el formato especificado. También permite aplicar una referencia cultural determinada.
DECLARE @fecha DATE = '2022-09-27';
SELECT FORMAT (@fecha, 'dd/MM/yyyy');
El resultado de la ejecución devolverá la fecha en el siguiente formato que hemos especificado: 27/09/2022.
DECLARE @fecha DATE = '2022-09-27';
SELECT FORMAT( @fecha, 'd', 'en-US' ) AS fomatoUSA
El resultado de la ejecución devolverá la fecha en el formato US: 9/27/2022.
DECLARE @fecha DATE = '2022-09-27';
SELECT FORMAT( @fecha, 'D', 'en-US' ) AS fomatoUSA
El resultado de la ejecución devolverá la descripción de la fecha en el formato US: Tuesday, September 27, 2022.
- REPLACE: función que reemplaza las instancias de una subcadena dentro de una cadena, por una nueva subcadena.
SELECT REPLACE('WEB BBDD', 'BBDD', 'SQL');
El resultado de la ejecución devolverá: WEB SQL
- LOWER: función que convierte los caracteres de una cadena de mayúscula a minúscula.
SELECT LOWER ('HOLA MUNDO');
El resultado de la ejecución devolverá: hola mundo.
- UPPER: función que convierte los caracteres de una cadena de minúscula a mayúscula.
SELECT UPPER ('hola mundo');
El resultado de la ejecución devolverá: HOLA MUNDO
-STR(): función que devuelve un dato numérico en una cadena.
SELECT STR(123.458, 5, 2);
- EL primer parámetro hace alusión al valor numérico a convertir.
- El segundo parámetro indica la longitud de la cadena.
- El tercer parámetro indica el número de decimales.
El resultado de la ejecución será: 123.46.
- SUBSTRING(): función que devuelve caracteres específicos de una cadena:
SELECT SUBSTRING('Hola mundo', 6, 5);
- El primer parámetro corresponde a la cadena de texto.
- El segundo parámetro indica la posición de partida para recuperar los caracteres.
- El tercer parámetro indica la longitud de caracteres a devolver partiendo de la posición de partida.
El resultado de la ejecución será: mundo