Vous êtes sur la page 1sur 47

Funciones de una Sola Fila

Objetivos
Al finalizar esta leccin, debera estar capacitado para:

Describir varios tipos de funciones disponibles en SQL Utilizar funciones de caracteres, nu !ricas " fec#a en sentencias SELECT Describir el uso de funciones de conversin

Funciones SQL

$ntrada ar% & ar% '

Funcin La funcin realiza la accin

Salida

(alor de resultado

ar% n

Dos )ipos de Funciones SQL

Funciones

Funciones de una sola fila

Funciones de varias filas

Funciones de una Sola Fila


Las funciones de una sola fila:

*anipulan ele entos de datos+ Aceptan ar%u entos " devuelven un valor+ Act,an sobre cada fila devuelta+ Devuelven un resultado por fila+ -ueden odificar el tipo de dato+ Se pueden anidar+ Aceptan ar%u entos .ue pueden ser una colu na o una e/presin+

function_name arg1, )] function_name [( [( arg1, arg2,... arg2,... )]

Funciones de una Sola Fila


0ar1cter

3eneral Funciones de una sola fila

2, ero

0onversin

Fec#a

Funciones de 0aracteres
Funciones de 0aracteres

Funciones de anipulacin de a",sculas4 in,sculas


LOWER UPPER INITCAP

Funciones de anipulacin de caracteres


CONCAT SUBSTR LENGTH INSTR LPAD | RPAD TRIM REPLACE

Funciones de *anipulacin de *a",sculas4*in,sculas


$stas funciones convierten las para cadenas de caracteres+ a",sculas4 in,sculas

Function LOWER('SQL Course') UPPER('SQL Course')

5esult s ! "ourse SQL COURSE

INITCAP('SQL Course') S ! Course

Uso de Funciones de *anipulacin de *a",sculas4*in,sculas


*uestre el n, ero de e pleado, el no bre " el n, ero de departa ento para el e pleado 6i%%ins:
SELECT SELECT e#$!o%ee&'() e#$!o%ee&'() !*s+&,*#e) !*s+&,*#e) (e$*r+#e,+&'( (e$*r+#e,+&'( -ROM e#$!o%ees -ROM e#$!o%ees WHERE WHERE !*s+&,*#e !*s+&,*#e . . '/'00',s'1 '/'00',s'1 ,o ,o ro2s ro2s se!e"+e( se!e"+e( SELECT e#$!o%ee&'() !*s+&,*#e) (e$*r+#e,+&'( -ROM e#$!o%ees WHERE LOWER(!*s+&,*#e) . '/'00',s'1

Funciones de *anipulacin de 0aracteres


$stas funciones anipulan cadenas de caracteres:

Funcin CONCAT('He!!o') 'Wor!(') SUBSTR('He!!oWor!(')3)4) LENGTH('He!!oWor!(') INSTR('He!!oWor!(') 'W') LPAD(s*!*r%)35)'6') RPAD(s*!*r%) 35) '6') TRIM('H' -ROM 'He!!oWor!(')

5esultado He!!oWor!( He!!o 35 7 6666689555 8955566666 e!!oWor!(

Uso de Funciones de *anipulacin de 0aracteres


&
SELECT e#$!o%ee&'() CONCAT(:'rs+&,*#e) !*s+&,*#e) NAME) ;o<&'() LENGTH (!*s+&,*#e)) INSTR(!*s+&,*#e) '*') =Co,+*',s '*'>= -ROM e#$!o%ees WHERE SUBSTR(;o<&'() 9) . 'REP'1

' 7

&

'

Funciones 2u !ricas

ROUND: 5edondea el valor a los deci ales especificados+ ROUND(94?@87) 8) TRUNC(94?@87) 8) MOD: Devuelve el resto de la divisin+ MOD(3755) A55) ABS: 0alcula el valor absoluto de n+ ABS(B37) 0$8L: 0alcula el CEIL(37?A) -LOOR: 0alcula el -LOOR(37?C) POWER: Devuelve POWER(A)8) a"or nu ero entero enor nu ero entero 37 a"or o i%ual .ue n+ 3C enor o i%ual .ue n+ 37 elevado a la n potencia, n debe ser entero @ 355 94?@A 94?@8 TRUNC: )runca el valor a los deci ales especificados+

Uso de la Funcin ROUND


& ' 7

SELECT ROUND(94?@8A)8)) ROUND(94?@8A)5)) ROUND(94?@8A)B3) -ROM DUAL1

&

'

DUAL es una tabla ficticia .ue puede utilizar para ver los resultados de funciones " c1lculos+

Uso de la Funcin TRUNC


&
SELECT -ROM

' 7

TRUNC(94?@8A)8)) TRUNC(94?@8A)) TRUNC(94?@8A)B8) DUAL1

&

'

Uso de la Funcin MOD


0alcule el resto de un salario despu!s de dividirlo por 9::: para todos los e pleados cu"os car%os son representantes de ventas+
SELECT !*s+&,*#e) s*!*r%) MOD(s*!*r%) 4555) -ROM e#$!o%ees WHERE ;o<&'( . 'SA&REP'1

)rabajo con Fec#as



La base de datos Oracle al acena fec#as en un for ato nu !rico interno: si%lo, a;o, es, da, #oras, inutos, se%undos+ $l for ato de visualizacin de fec#a por defecto es DD<*O2<55+ Le per ite al acenar fec#as del si%lo ==8 en el si%lo == especificando sola ente los dos ,lti os d%itos del a;o+ Le per ite al acenar fec#as del si%lo == en el si%lo ==8 de la is a for a+
SELECT !*s+&,*#e) /'re&(*+e -ROM e#$!o%ees WHERE !*s+&,*#e !'De 'GE'1

)rabajo con Fec#as


SFSDATE es una funcin .ue devuelve:

Fec#a 6ora

Arit !tica con Fec#as



Su e o reste un n, ero a4de una fec#a para producir un valor de fec#a+ 5este dos fec#as para buscar el n, ero de das entre ellas+ Su e #oras a una fec#a dividiendo el n, ero de #oras por '>+

Uso de Operadores Arit !ticos con Fec#as


SELECT !*s+&,*#e) (SFSDATEB/'re&(*+e)GC AS WEEHS -ROM e#$!o%ees WHERE (e$*r+#e,+&'( . @51

Funciones de Fec#a
Funcin MONTHS&BETWEEN ADD&MONTHS NEIT&DAF LAST&DAF ROUND TRUNC Descripcin 2, ero de eses entre dos fec#as Su a eses de calendario a una fec#a Si%uiente da de la fec#a especificada ?lti o da del es

5edondea la fec#a )runca la fec#a

Uso de Funciones de Fec#a


MONTHS&BETWEEN ('53BSEPB@4')'33BJANB@9') 3@?7CC93@9 ADD&MONTHS ('33BJANB@9')7) '33BJULB@9'

NEIT&DAF ('53BSEPB@4')'-RIDAF') '5KBSEPB@4' LAST&DAF('53B-EBB@4') '8KB-EBB@4'

Uso de Funciones de Fec#a


Asu a SFSDATE . '84BJULB@4': ROUND(SFSDATE)'MONTH') ROUND(SFSDATE )'FEAR') TRUNC(SFSDATE )'MONTH') TRUNC(SFSDATE )'FEAR') 53BAUGB@4 53BJANB@7 53BJULB@4 53BJANB@4

-r1ctica 7, -arte Uno: (isin 3eneral


$sta pr1ctica cubre los si%uientes te as: $scritura de una consulta .ue uestre la fec#a actual 0reacin de consultas .ue re.uieran el uso de funciones nu !ricas, de caracteres " de fec#a 5ealizacin de c1lculos de eses " a;os de servicio para un e pleado

Funciones de 0onversin

0onversin de tipos de dato

0onversin i plcita de tipos de dato

0onversin e/plcita de tipos de dato

0onversin 8 plcita de )ipos de Dato


-ara las asi%naciones, Oracle Server puede convertir auto 1tica ente lo si%uiente:

De LARCHAR8 or CHAR LARCHAR8 or CHAR NUMBER DATE

A NUMBER DATE LARCHAR8 LARCHAR8

0onversin 8 plcita de )ipos de Dato


-ara la evaluacin de la e/presin, Oracle Server puede convertir auto 1tica ente lo si%uiente:

De LARCHAR8 or CHAR LARCHAR8 or CHAR

A NUMBER DATE

0onversin $/plcita de )ipos de Dato


TO&NUMBER TO&DATE

NUMBER

06A5A0)$5

DATE

TO&CHAR

TO&CHAR

Uso de la Funcin TO&CHAR con Fec#as


TO&CHAR( date, format_model ') TO&CHAR( date, ' ' format_model ')

$l

odelo de for ato: Se debe escribir entre co illas sencillas " es sensible a a",sculas4 in,sculas+ -uede incluir cual.uier ele ento de for ato de fec#a v1lido+ )iene un ele ento fm para eli inar espacios rellenados o supri ir ceros a la iz.uierda+ Se separa del valor de fec#a con una co a+

$le entos del *odelo de For ato de Fec#a


@@@@ @$A5 ** *O2)6 *O2 D@ DA@ DD A;o co pleto en n, eros A;os en letra (alor de dos d%itos para el 2o bre co pleto del es es es

Abreviatura de tres letras del

Abreviatura de tres letras del da de la se ana 2o bre co pleto del da de la se ana Da del es en n, ero

$le entos del *odelo de For ato de Fec#a



Los ele entos de #ora for atean la porcin de #ora de la fec#a+ A%re%ue cadenas de caracteres escribi!ndolas entre co illas dobles+

HH89MMIMSS AM

34M94MA8 PM

DD =o:= MONTH

38 o: OCTOBER

Los sufijos nu !ricos escriben los n, eros en letra+

((s$+/

:our+ee,+/

Uso de la Funcin TO&CHAR con Fec#as


SELECT !*s+&,*#e) TO&CHAR(/'re&(*+e) ':#DD Mo,+/ FFFF') AS HIREDATE -ROM e#$!o%ees1

Uso de la Funcin TO&CHAR con 2, eros

TO&CHAR( number, format_model ') TO&CHAR( number, ' ' format_model ')

$stos son al%unos de los ele entos de for ato .ue puede utilizar con la funcin TO&CHAR para ostrar un valor nu !rico co o car1cter: B : C L + , 5epresenta un n, ero+ Obli%a a ostrar un cero+

0oloca un si%no de dlar flotante+ Utiliza el s bolo de divisa local flotante+ 8 pri e una co a deci al+ 8 pri e un indicador de iles+

Uso de la Funcin TO&CHAR con 2, eros

SELECT TO&CHAR(s*!*r%) 'N@@)@@@?55') SALARF -ROM e#$!o%ees WHERE !*s+&,*#e . 'Er,s+'1

Uso de las Funciones TO&NUMBER " TO&DATE

0onvierta una cadena de caracteres en for ato nu !rico utilizando la funcin TO&NUMBER:
TO&NUMBER( char [ , format_model ']) TO&NUMBER( char [ ,' ' format_model '])

0onvierta una cadena de caracteres en for ato de fec#a utilizando la funcin TO&DATE:
TO&DATE( char [) format_model ']) TO&DATE( char [) ' ' format_model '])

$stas funciones tienen un odificador :O .ue especifica la coincidencia e/acta para el ar%u ento de caracteres " un odelo de for ato de fec#a de una funcin TO&DATE?

Uso de las Funciones TO&NUMBER " TO&DATE

0onvierta una cadena de caracteres en for ato nu !rico utilizando la funcin TO&NUMBER:
TO&NUMBER( char [ , format_model ']) TO&NUMBER( char [ ,' ' format_model '])

0onvierta una cadena de caracteres en for ato de fec#a utilizando la funcin TO&DATE:
TO&DATE( char [) format_model ']) TO&DATE( char [) ' ' format_model '])

$stas funciones tienen un odificador :O .ue especifica la coincidencia e/acta para el ar%u ento de caracteres " un odelo de for ato de fec#a de una funcin TO&DATE?

For ato de Fec#a 55


A;o Actual &BB9 &BB9 '::& '::& Fec#a $specificada 'D<O0)<B9 'D<O0)<&D 'D<O0)<&D 'D<O0)<B9 For ato 55 &BB9 ':&D ':&D &BB9 For ato @@ &BB9 &B&D ':&D ':B9

Si el a;o especificado de dos d%itos es:


:E>B Si los dos d%itos del a;o actual son: :E>B La fec#a .ue se devuelve est1 en el si%lo actual+ 9:EBB La fec#a .ue se devuelve est1 en el si%lo anterior al actual+

9:EBB

La fec#a .ue se La fec#a .ue se devuelve est1 en el devuelve est1 en el si%lo si%uiente al actual+ si%lo actual+

$je plo de For ato de Fec#a RR


-ara buscar e pleados contratados antes de &BB:, utilice el for ato RR, .ue produce los is os resultados tanto si se ejecuta el co ando en &BBB o a#ora:
SELECT !*s+&,*#e) TO&CHAR(/'re&(*+e) 'DDBMo,BFFFF') -ROM e#$!o%ees WHERE /'re&(*+e P TO&DATE('53BJ*,B@5') 'DDBMo,BRR')1

Funciones de Anida iento



Las funciones de una sola fila se pueden anidar a cual.uier nivel+ Las funciones anidadas se eval,an desde el nivel profundo al enos profundo+ 1s

-A(-8(-3("o!)*r03))*r08))*r0A)
Paso 1 = Resultado 1 Paso 2 = Resultado 2 Paso 3 = Resultado 3

Funciones de Anida iento

SELECT !*s+&,*#e) NLL(TO&CHAR(#*,*0er&'()) 'No M*,*0er') -ROM e#$!o%ees WHERE #*,*0er&'( IS NULL1

Funciones 3enerales
$stas funciones trabajan con cual.uier tipo de dato " est1n relacionadas con el uso de valores nulos+

NLL (eO$r3) eO$r8) NLL8 (eO$r3) eO$r8) eO$rA) NULLI- (eO$r3) eO$r8) COALESCE (eO$r3) eO$r8) ???) eO$rn)

Funcin NLL
0onvierte un valor nulo en un valor real+

Los tipos de dato .ue se pueden utilizar son fec#as, caracteres " nu !ricos+ Los tipos de dato deben coincidir: NLL("o##'ss'o,&$"+)5) NLL(/'re&(*+e)'53BJANB@C') NLL(;o<&'()'No Jo< Fe+')

Uso de la Funcin NLL


SELECT !*s+&,*#e) s*!*r%) NLL("o##'ss'o,&$"+) 5)) (s*!*r%638) Q (s*!*r%6386NLL("o##'ss'o,&$"+) 5)) AN&SAL -ROM e#$!o%ees1

&

'

A & '

Uso de la Funcin NLL8


& SELECT !*s+&,*#e) s*!*r%) "o##'ss'o,&$"+) NLL8("o##'ss'o,&$"+) ' 'SALQCOMM') 'SAL') ',"o#e -ROM e#$!o%ees WHERE (e$*r+#e,+&'( IN (45) K5)1

&

'

Uso de la Funcin NULLI&


SELECT :'rs+&,*#e) LENGTH(:'rs+&,*#e) =eO$r3=) ' !*s+&,*#e) LENGTH(!*s+&,*#e) =eO$r8=) NULLI-(LENGTH(:'rs+&,*#e)) LENGTH(!*s+&,*#e)) resu!+ -ROM e#$!o%ees1

A & ' 7

Uso de la Funcin COALESCE



La ventaja de la funcin COALESCE sobre la funcin NLL es .ue puede to ar varios valores alternativos+ Si la pri era e/presin no es nula, devuelve dic#a e/presinF en caso contrario, realiza una fusin GCOALESCEH de las e/presiones restantes+

Uso de la Funcin COALESCE


SELECT !*s+&,*#e) COALESCE("o##'ss'o,&$"+) s*!*r%) 35) "o## -ROM e#$!o%ees ORDER BF "o##'ss'o,&$"+1

$/presiones 0ondicionales

-roporcionan el uso de la l%ica 8F<)6$2<$LS$ dentro de una sentencia SQL+ Utilizan dos !todos: $/presin CASE Funcin DECODE

Vous aimerez peut-être aussi