Professional Documents
Culture Documents
Funciones de
Rengln Simples
Objetivos
Al completar esta leccin, deber ser
Funciones de SQL
Entrada
Salida
Funcin
arg 1
Funcin ejecuta
una accin
arg 2
Resultado
arg n
Funciones de SQL
Las funciones son herramientas muy poderosas de SQL y pueden ser utilizadas
de la siguiente forma:
Funciones
Funciones
RenglnRengln-simple
Funciones
RenglnRengln-Mltiple
Funciones de SQL
Existen dos tipos de funciones:
Funciones de Rengln-Simple
Funciones de Rengln-Mltiple
Funciones de rengln simple
Estas funciones operan con renglones individuales y retorna un resultado por
rengln, los tipos de funcin son para:
Caracteres
Nmeros
Fechas
Funciones de rengln-mltiple
Estas funciones manipulan grupos de renglones para retornar solo un resultado
por cada grupo de registros. Estas funciones se analizaran en la siguiente leccin
Funciones de Rengln-simple
Manipulan datos
Aceptan argumentos y retornan un valor
Actan sobre cada rengln
Retornan un resultado por rengln
Pueden ser anidadas
function_name
function_name (column|expression,
(column|expression, [arg1,
[arg1, arg2,...])
arg2,...])
Funciones de Rengln-simple
Son utilizadas para manipular datos. Aceptan uno o ms argumentos y devuelven
un solo valor por cada registro procesado
Sintaxis:
Function_name
Column
Expressin
arg1, arg2
es el nombre de la funcin
una columna de la base de datos
es una cadena de caracteres o una expresin
es cualquier argumento de la funcin
Funciones de Rengln-simple
Numricas
Caracter
Funciones
RenglnRengln-simple
Conversin
Fecha
Funciones para
Conversin
Funciones para
manipular cadenas
LEFT
LEN
LTRIM
RIGHT
LOWER
UPPER
REPLICATE
RTRIM
SUBSTRING
Conversin a Maysculas/Minsculas
Manipulacin de cadenas
Funcin:
LOWER(c_expression)
Propsito
Retorna una cadena de caracteres convertida a
minsculas
UPPER(c_expression)
Retorna una cadena de caracteres convertida a
maysculas.
LEFT(c_expression)
Retorna el numero de caracteres mas a la
izquierda de la cadena.
LEN(c_expression).Retorna el numero de caracteres que contiene la
cadena.
LTRIM(c_expression).Elimina los caracteres en blanco de la izquierda de
c_expression.
RIGHT(c_expression,n)
Retorna los n caracteres ms a la derecha de la
cadena.
RTRIM(c_expression).Elimina los caracteres en blanco de la derecha de
c_expression.
SUBSTRING(c_expression).- Retorna los n caracteres de c_expression
empezando en Stara
REPLICATE (carcter,n).Repite n varias veces carcter.
Parte 4 SQL-Server Bsico
Pgina 7 de 32
Funcin
Resultado
SQL COURSE
SELECT
FROM emp;
EMPLOYEE DETAILS
----------------------------------------The job title for KING is president
The job title for BLAKE is manager
The job title for CLARK is manager
The job title for JONES is manager
The job title for MARTIN is salesman
The job title for ALLEN is salesman
The job title for TURNER is salesman
The job title for JAMES is clerk
Resultado
LEFT('Good', 2)
Go
SUBSTRING('String',1,3)
Str
LEN('String')
LTRIM('
String
String')
RIGHT('Good', 2)
od
RTRIM('String
String
')
REPLICATE('S, 4)
SSSS
Funciones numricas
ROUND:
POWER:
ABS:
ROUND(45.923,2,1), ROUND(45.923,0,1),
ROUND(45.923,-1,1)
SELECT
FROM
WHERE
ENAME
SAL
COMM
---------- --------- --------- ------------ALLEN
1600.00
300.00
40.00
WARD
1250.00
500.00
35.36
MARTIN
1250.00
1400.00
35.36
TURNER
1500.00
.00
38.73
ENAME
SAL
COMM
---------- --------- --------- ------------ALLEN
1600.00
300.00
1300.00
WARD
1250.00
500.00
750.00
MARTIN
1250.00
1400.00
150.00
TURNER
1500.00
.00
1500.00
DESCRIPCION
DATEDIFF
DATENAME
DATEPART
GETDATE
DATEADD
Funcin DATEADD
DATEADD(datepart
DATEADD(datepart,, number,
number, date)
date)
Retorna una nueva fecha despus de agregarle
hiredate
--------------------------1981-06-09 00:00:00.000
1981-11-17 00:00:00.000
1982-01-23 00:00:00.000
--------------------------1981-11-09 00:00:00.000
1982-04-17 00:00:00.000
1982-06-23 00:00:00.000
Datepart
Abreviacin
Year
Quarter
Month
Day of year
Day
Week
Hour
Minute
Second
Millisecond
yy
qq
mm
dy
dd
wk
hh
mi
ss
ms
Parte 4 SQL-Server Bsico
Pgina 17 de 32
Funcin DATEDIFF
DATEDIFF(datepart
DATEDIFF(datepart,, startdate,
startdate, enddate)
enddate)
Retorna el nmero de unidades expresadas como
hiredate
Years
--------------------------- ----------1980-12-17 00:00:00.000
19
1981-04-02 00:00:00.000
18
1982-12-09 00:00:00.000
17
1983-01-12 00:00:00.000
16
1981-12-03 00:00:00.000
18
Funcin DATENAME
DATENAME(datepart
DATENAME(datepart,, date)
date)
Devuelve una cadena que representa la fecha
especificada como datepart.
datepart.
SELECT ename, hiredate,
DATENAME(dw, hiredate) 'Day of week'
FROM
emp;
ename
---------SMITH
ALLEN
WARD
JONES
....
hiredate
--------------------------1980-12-17 00:00:00.000
1981-02-20 00:00:00.000
1981-02-22 00:00:00.000
1981-04-02 00:00:00.000
Day of week
------------------------Wednesday
Friday
Sunday
Thursday
Funcin DATEPART
DATEPART(datepart
DATEPART(datepart,, date)
date)
Devuelve un entero representado una parte de la
fecha expresada como datepart.
datepart.
SELECT ename, DATEPART(yy, hiredate) Year,
DATEPART(mm, hiredate) Month,
DATEPART(dd, hiredate) Day
from emp
ename
Year
Month
Day
---------- ----------- ----------- ----------SMITH
1980
12
17
ALLEN
1981
2
20
WARD
1981
2
22
...
SELECT
FROM
Funciones de Conversin
Conversiones
de tipo
Conversiones
de tipo Implcitas
Conversiones
de tipo Explcitas
Funciones de Conversin
Existen dos tipos de conversin entre tipos de datos:
Conversiones de tipo Implcitas: son aquellas que ocurren sin tener que realizar
la conversin de tipo.
Conversiones de tipo Explcitas: son aquellas que necesitan una conversin de
tipo para poder operar.
data_type
data_type..
SELECT ename,
CAST( hiredate AS char) "Hire Date"
FROM
emp;
ename
---------SMITH
ALLEN
WARD
........
Hire Date
-----------------------------Dec 17 1980 12:00AM
Feb 20 1981 12:00AM
Feb 22 1981 12:00AM
ename
---------SMITH
ALLEN
WARD
........
Hire Date
---------17/12/1980
20/02/1981
22/02/1981
Funcin ISNULL
Convierte un valor nulo a un valor indicado
Tipos de datos comunes que se utilizan
para evitar un NULL son date,
date, character
y numeric.
numeric.
Ejemplos :
ISNULL(comm
ISNULL(comm,, 0)
ISNULL(hiredate
,GETDATE())
ISNULL(hiredate,GETDATE())
ISNULL(job, 'No Job Yet')
Funcin ISNULL
Convierte un valor nulo a un valor indicado.
Sintaxis
NVL (expr1, expre2)
Donde
Expr 1
Expr 2
Funcin ISNULL
En el ejemplo se calcula el sueldo anual mas la comisin, los empleados que no
ganan comisin se reemplaza el valor nulo por cero, por lo que el resultado se
muestra en el ejemplo. En caso contrario si no se utiliza la funcin ISNULL el
resultado no es el mismo.
Funciones Anidadas
Funciones de RenglnRengln-simple pueden estar
anidadas a cualquier nivel.
F3(F2(F1(col,arg1),arg2),arg3)
Paso 1 = Resultado 1
Paso 2 = Resultado 2
Paso 3 = Resultado 3
Funciones Anidadas
Funciones de Rengln-Simple pueden estar anidadas a cualquier nivel de
profunidad. Las funciones anidadas son evaluadas desde la ms interna a la ms
externa.
Funciones Anidadas
SELECT ename,
FROM
ORDER
emp
BY mgr
ename
Manager
---------- ----------------------------KING
No Manager
Prcticas
Crear consultas utilizando funciones
numricas, fecha y carcter
Prctica 4
1.Haga una consulta para desplegar la fecha actual.
Date
---------------------------------------1999-03-18
15:14:54.90
2. Cree un query para mostrar el numero de empleado, el nombre, salario y el salario
incrementado en 15%. Guarde su consulta como s04q02.sql
empno
ename
sal
New Salary
-------------------------------------------7369
SMITH
800.0
920.0000
7499
ALLEN
1600.00
1840.0000
7521
WARD
1250.00
1437.5000
7566
JONES
2975.00
3421.2500
7654
MARTINI
1250.00
1437.5000
7698
BLAKE
2850.00
3277.5000
7782
CLARK
2450.00
2817.5000
7788
SCOTT
3000.00
3450.0000
7839
KING
5000.00
5750.0000
7844
TURNER
1500.00
1725.0000
7876
ADAMS
1100.00
1265.0000
7900
JAMES
950.00
1092.5000
7902
FORD
3000.00
3450.0000
7934
MILLER
1300.00
1495.0000
3. Modifique El query s04q02.sql para agregar una columna adicional, en la que obtenga el
monto de incremento del salario.
empno
ename
sal
New Salary
Increase
------------------------------------------------------7369
SMITH
800.0
920.0000
120.0000
7499
ALLEN
1600.00
1840.0000
240.0000
7521
WARD
1250.00
1437.5000
187.5000
7566
JONES
2975.00
3421.2500
446.2500
7654
MARTINI
1250.00
1437.5000
187.5000
7698
BLAKE
2850.00
3277.5000
427.5000
7782
CLARK
2450.00
2817.5000
367.5000
7788
SCOTT
3000.00
3450.0000
450.0000
7839
KING
5000.00
5750.0000
750.0000
7844
TURNER
1500.00
1725.0000
225.0000
7876
ADAMS
1100.00
1265.0000
165.0000
7900
JAMES
950.00
1092.5000
142.5000
7902
FORD
3000.00
3450.0000
450.0000
7934
MILLER
1300.00
1495.0000
195.0000
Parte 4 SQL-Server Bsico
Pgina 29 de 32
Practica 4 (continuacin)
4. Muestre el nombre de empleado, fecha de ingreso expresada como se muestra en el
ejemplo.
ename
Hire Date
-------------------------SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
Prctica 4 (continuacin)
6. Haga una consulta que dibuje una grafica mostrando el nivel de ingresos del empleado,
como se muestra.
ename
sal
-------------------------------------------------------------------------------------SMITH
800.0
********
ALLEN
1600.00
****************
WARD
1250.00
************
JONES
2975.00
*****************************
MARTIN
1250.00
************
BLAKE
2850.00
****************************
CLARK
2450.00
************************
SCOTT
3000.00
******************************
KING
5000.00
*************************************
TURNER
1500.00
***************
ADAMS
1100.00
***********
JAMES
950.00
*********
FORD
3000.00
******************************
MILLER
1300.00
*************
7. Escriba una consulta que muestre el nombre tipo oracin (la primer letra mayscula y
el resto en minsculas) y la longitud del nombre, para aquellos empleados cuyo nombre
empiece ya sea con J, A o M.
Name
Length
-------------------Allen
5
Jones
5
Martin
6
Adams
5
James
5
Miller
6
Prctica 4 (continuacin)
8. Muestre el nombre, la fecha de ingreso en formato (ss/mm/yyyy) y el nombre del da en
el que ingres.
ename
Hire Date
Date of Week
-------------------------------------SMITH
17/12/1980
Wednesday
ALLEN
20/02/1981
Friday
WARD
22/02/1981
Sunday
JONES
02/04/1981
Thursday
MARTIN
28/09/1981
Monday
BLAKE
01/05/1981
Friday
CLARK
09/06/1981
Tuesday
SCOTT
09/12/1982
Thursday
KING
17/11/1981
Tuesday
TURNER
08/09/1981
Tuesday
ADAMS
12/01/1983
Wednesday
JAMES
03/12/1981
Thursday
FORD
03/12/1981
Thursday
MILLER
23/01/1982
Saturday
9. Haga una consulta que muestre la comisin de los empleados. Si el empleado no tiene
muestre el mensaje No commission
ename
Comm
--------------------------SMITH
No Commission
ALLEN
300.00
WARD
500.00
JONES
No Commission
MARTIN
1400.00
BLAKE
No Commission
CLARK
No Commission
SCOTT
No Commission
KING
No Commission
TURNER
0.00
ADAMS
No Commission
JAMES
No Commission
FORD
No Commission
MILLER
No Commission