Práctica 2: Funciones de SQL

Anuncio
Práctica 2: Funciones de SQL
• En una consulta SQL las funciones ejecutan
operaciones que transforman los datos.
• Pueden aparecer:
– en el SELECT para visualizar los datos transformados,
– o en el WHERE para comparar su resultado con otro
valor.
II18--Universitat Jaume I
1
Valores Nulos
• Cuando el valor de una columna para una
determinada fila es desconocido, se dice que
tiene un valor nulo.
• Ejemplos:
– Se desconoce el valor de una propiedad para cierta
ocurrencia de una entidad. (No se conoce el pueblo
de un cliente)
– Una propiedad no que tiene sentido para cierta
ocurrencia de una entidad. (DNI de un niño)
II18--Universitat Jaume I
2
1
Filtrado de valores nulos
SELECT NVL(codpue, ’Desconocido!!!’)
TABLA CLIENTES
FROM clientes
CODCLI NOMBRE
DIRECCION
WHERE codcli < 25; 20
‘José Pérez’ ‘Barcelona 2’
13
12
27
‘María Gil’
‘Luis Sorlí’
‘Laura Puig’
‘Peñas 5’
‘Prim 7’
‘Peñas 24’
CODPOSTAL CODPUE
‘13004’
‘15008’
‘12003’
‘15008’
‘1400’
‘1456’
‘1456’
RESULTADO
CODPUE
‘1400’
‘1456’
‘Desconocido!!!’
II18--Universitat Jaume I
3
Comprobación de valores nulos
TABLA CLIENTES
CODCLI NOMBRE
DIRECCION
CODPOSTAL CODPUE
20
13
12
27
‘Barcelona 2’
‘Peñas 5’
‘Prim 7’
‘Peñas 24’
‘13004’
‘15008’
‘12003’
‘15008’
SELECT *
FROM clientes
WHERE codpue IS NULL;
‘José Pérez’
‘María Gil’
‘Luis Sorlí’
‘Laura Puig’
‘1400’
‘1456’
‘1456’
RESULTADO
CODCLI NOMBRE
DIRECCION
CODPOSTAL CODPUE
12
‘Prim 7’
‘12003’
‘Luis Sorlí’
II18--Universitat Jaume I
4
2
Ejemplos del uso de funciones
SELECT *
FROM clientes
WHERE codpue IS NOT NULL;
SELECT codfac, fecha
FROM facturas
WHERE NVL( iva, 0 ) = 0;
SELECT DISTINCT codart
FROM lineas_fac
WHERE codfac BETWEEN 8 AND10;
II18--Universitat Jaume I
5
Formatos de fecha (para TO_DATE y TO_CHAR)
Formato
Ejemplo
Formato
Ejemplo
YYYY
YY
Q
WW
MM
DDD
MON
MONTH
DAY
’1999’
’99’
’3’
’10’
’09’
’203’
’ENE’
’ENERO’
’LUNES’
DD/MM/YY
DD-MM-YYYY
DD/MON/YY
DDMMYYYY
’01/09/99’
’01-09-1999’
’01/SEP/99’
’01091999’
... Y muchos más ...
II18--Universitat Jaume I
6
3
Manipulación de fechas
SELECT SYSDATE
FROM dual;
11-10-04
SELECT dto, TO_CHAR(fecha, ‘dd-mm-yy’)
FROM facturas
WHERE codfac = 10;
2 26-03-01
SELECT codfac
FROM facturas
WHERE TO_NUMBER( TO_CHAR(SYSDATE, ‘yyyy’) ) TO_NUMBER( TO_CHAR(fecha, ‘yyyy’) ) = 1;
II18--Universitat Jaume I
7
LIKE (comparación de cadenas)
SELECT codcli
FROM clientes
WHERE nombre LIKE ‘%garcia%’;
%
_
cualquier cadena
Î cualquier carácter
Î
SELECT codpue
FROM pueblos
WHERE nombre LIKE ‘%palma_’;
SELECT codpue
FROM pueblos
WHERE nombre LIKE ‘palm_s’;
II18--Universitat Jaume I
8
4
SUBSTR, UPPER y LENGTH
SELECT codpro
FROM provincias
WHERE SUBSTR(nombre, 1, 2) = ‘ca’;
SELECT codpro
FROM provincias
WHERE UPPER( SUBSTR(nombre, 1, 2) ) = ‘CA’;
SELECT SUBSTR(nombre, LENGTH(nombre) - 3)
FROM provincias
WHERE nombre LIKE ‘Valenc% ;
ncia
II18--Universitat Jaume I
9
CASE
CASE WHEN expresión1 THEN ret1
WHEN expresión2 THEN ret2
…
ELSE retn
END
select codfac,
CASE WHEN iva = 16 THEN ‘normal’
WHEN iva = 7 THEN ‘reducido’
ELSE ‘otros’
END
FROM facturas
WHERE dto = 20 ;
II18--Universitat Jaume I
10
5
CASE
SELECT codart, descrip, precio,
precio *
CASE
WHEN stock > 2 * stock_min THEN 0.8
ELSE 1
END
FROM articulos
WHERE codart like ‘A%’ ;
II18--Universitat Jaume I
11
6
Descargar