Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase 07 - Funciones Escalares y SubConsultas
Clase 07 - Funciones Escalares y SubConsultas
Funciones especiales
y SubConsultas
Funciones especiales
Las funciones especiales más importantes son las de agregación (sum, avg, max, etc)
y las escalares. Estas últimas permiten transformar los datos, para corregir, modificar o
complementar la información resultante de las consultas que hacemos a una o varias
tablas.
Funciones de agregación
Funciones escalares
Operan sobre un valor y después devuelven otro valor. Las funciones escalares se
pueden utilizar donde la expresión sea válida, de lo contrario el sistema de gestión de
base de datos informará un error.
Tipos de funciones
Existe una gran variedad de funciones escalares, estas son las más usadas.
Caracteres o Cadena
Las funciones de este tipo permiten manipular campos de texto o alfanuméricos.
Todas las funciones de cadena integradas son deterministas, salvo FORMAT. Esto
significa que devuelven el mismo valor siempre que se llamen con un conjunto
determinado de valores de entrada.
Cuando se pasan a las funciones de cadena argumentos que no son valores de
cadena, el tipo de entrada se convierte explícitamente en un tipo de datos de texto.
Sintaxis
Select LEFT ( Campo, Cantidad_de_caracteres_a_extraer) as Campo_nuevo
From Tabla;
Nombre Apellido
Kevin Vargas
Andres Mejia
Dario Gonzales
Resultado
Nombre Apellido
Kev Vargas
And Mejia
Dar Gonzales
Right
Extrae caracteres iniciando desde el lado derecho
Sintaxis
Select RIGHT( Campo, Cantidad_de_caracteres_a_extraer) as Campo_nuevo
From Tabla;
Ejemplo sobre la tabla clientes:
Nombre Apellido
Kevin Vargas
Andres Mejia
Dario Gonzales
Resultado
Nombre Apellido
in Vargas
es Mejia
io Gonzales
Concat
Permite unir campos o caracteres
Nombre Apellido
Kevin Vargas
Andres Mejia
Dario Gonzales
Resultado
Nombre_completo
KevinVargas
AndresMejia
DarioGonzales
Resultado
Nombre
Kevin@
Andres@
Dario@
Replace
Permite reemplazar caracteres en un campo
Nombre Apellido
Kevin Vargas
Andres Mejia
Dario Gonzales
Select replace(nombre, ‘K’, ‘Qu’) as Nombre, apellido from clientes where Nombre =
‘Kevin’;
Resultado
Nombre Apellido
Quevin Vargas
Upper/Lower
Permite convertir todos los valores a mayúsculas o minúsculas respectivamente
Sintaxis:
Select UPPER(Campo) From Tabla;
Select LOWER(Campo) From Tabla;
Nombre Apellido
Kevin Vargas
Andres Mejia
Dario Gonzales
Nombre Apellido
KEVIN Vargas
ANDRES Mejia
DARIO Gonzales
TRIM
Elimina espacios al inicio y al final del valor.
Sintaxis:
Select TRIM(Campo) From Tabla;
Nombre
Completo
Kevin
Andres
Dario
Resultado
Nombre
Kevin
Andres
Dario
Fecha y tiempo
Permite manipular y segmentar los datos en periodos de tiempo.
Sintaxis:
Select YEAR(campo_tipo_fecha) from tabla;
NroFactura Fecha
13256 01/12/2019
17364 01/01/2020
19384 12/12/2018
Resultado
NroFactura Anio
13256 2019
17364 2020
19384 2018
DATEPART / DATENAME
Sintaxis:
Select DATEPART(Year, campo_tipo_fecha) from tabla;
Select DATEPART(Quarter, campo_tipo_fecha) from tabla;
Select DATEPART(Month, campo_tipo_fecha) from tabla;
Select DATEPART(Week, campo_tipo_fecha) from tabla;
NroFactura Fecha
13256 01/12/2019
17364 01/01/2020
19384 12/12/2018
Resultado
NroFactura Mes_Texto
13256 Diciembre
17364 Enero
19384 Diciembre
DATEADD
Sintaxis:
Select DATEADD(periodo_de_tiempo, cantidad_de_periodos, campo_tipo_fecha) from
tabla;
NroFactura Fecha
13256 01/12/2019
17364 01/01/2020
19384 12/12/2018
Resultado
NroFactura Mes_Texto
13256 01/02/2020
17364 01/03/2020
19384 02/02/2019
DATEDIFF
Sintaxis:
Select DATEDIFF(periodo_de_tiempo, cantidad_de_periodos, campo_tipo_fecha) from
tabla;
NroFactura Fecha
13256 01/12/2019
17364 01/01/2020
19384 12/12/2018
Resultado
NroFactura Meses
13256 11
17364 12
19384 -1
Fecha y tiempo
Permiten realizar cálculos sobre campos de valores numéricos.
FLOOR
Sintaxis:
Select FLOOR(Campo1) from tabla;
Cliente Importe
13 2550,15
17 3660,30
19 2550,00
Resultado
Cliente Importe
13 2550,00
17 3660,00
19 2550,00
ABS
Devuelve el valor absoluto
Sintaxis:
Select ABS(Campo1) from tabla;
Cliente Credito
13 - 500,15
17 - 360,30
19 - 25,00
Resultado
Cliente Importe
13 500,15
17 360,30
19 25,00
Conversion
CAST
Convierte el campo de un tipo de datos a otro.
Sintaxis:
Select CAST(Campo1 AS INT) from tabla;
Select CAST(Campo1 AS varchar(20)) from tabla;
Select CAST(Campo1 AS text(20)) from tabla;
Subconsultas
CONCEPTO
También llamada consulta anidada o concatenada, consiste en una sentencia select
dentro de otra select.
Una subconsulta puede aparecer en cualquier parte en la que se pueda usar una
expresión, si devuelve un solo valor. Si una tabla solo aparece en una subconsulta y no
en la consulta externa, las columnas de esa tabla no se podrán incluir en la salida (la
lista de selección de la consulta externa).
Las instrucciones que incluyen una subconsulta normalmente tienen uno de estos
formatos:
Expresión WHERE [NOT] IN (subconsulta)
Expresión WHERE comparison_operator [ANY | ALL] (subconsulta)
WHERE [NOT] EXISTS (subconsulta)
CARACTERISTICAS
Puede retornar un escalar (un valor único), una lista (varios valores), un registro o hasta
una tabla.
Puede contener cualquiera de los comandos de un select común: DISTINCT, ORDER
BY, GROUP BY, LIMIT.
Puede contener join, unión, comentarios, funciones, etcétera.
Select
sum(deuda_total) as Deuda
from
deudores
where id_cliente = (Select id_cliente from clientes where Categoria = ‘Frecuentes’)
RESTRICCIONES
La consulta externa debe ser con comandos solo DML no DDL.
No se puede modificar una tabla y al mismo tiempo usarla en subconsulta.