You are on page 1of 18

Prctica Funciones: Ampliacin de Funciones

Mara D. Batista Galvn BASES


DE

DATOS

Escuela Tcnica Superior de Ingeniera Informtica Universidad de La Laguna

Resumen Propsito: Buscar informacin de funcines integradas en SQL.

ndice
1. Funciones 1.1. Funciones Numricas . . . . . . . . 1.1.1. SIN . . . . . . . . . . . . . 1.1.2. COS . . . . . . . . . . . . . 1.1.3. TAN . . . . . . . . . . . . . 1.1.4. SQRT . . . . . . . . . . . . 1.1.5. ABS . . . . . . . . . . . . . 1.1.6. SIGN . . . . . . . . . . . . 1.1.7. POWER . . . . . . . . . . . 1.1.8. EXP . . . . . . . . . . . . . 1.1.9. MOD . . . . . . . . . . . . 1.1.10. LOG . . . . . . . . . . . . 1.1.11. CEIL . . . . . . . . . . . . 1.1.12. FLOOR . . . . . . . . . . . 1.1.13. ROUND . . . . . . . . . . 1.1.14. TRUNC . . . . . . . . . . . 1.2. Funciones de Cadenas de Caracteres 1.2.1. CONCAT . . . . . . . . . . 1.2.2. INITCAP . . . . . . . . . . 1.2.3. UPPER . . . . . . . . . . . 1.2.4. LOWER . . . . . . . . . . 1.2.5. LENGTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 3 4 4 5 5 5 6 6 7 7 7 8 8 9 9 9 10 10 10

1.2.6. REPLACE . . . . . . . 1.2.7. TRIM . . . . . . . . . . 1.2.8. LTRIM y RTRIM . . . . 1.2.9. LPAD y RPAD . . . . . 1.2.10. SUBSTR . . . . . . . . 1.2.11. TO_CHAR . . . . . . . 1.3. Funciones de Manejo de Fechas 1.3.1. ADD_MONTHS . . . . 1.3.2. MONTHS_BETWEEN . 1.3.3. SYSDATE . . . . . . . 1.3.4. NEXT_DAY . . . . . . 1.3.5. LAST_DAY . . . . . . 1.3.6. CURRENT_DATE . . . 1.3.7. TO_DATE . . . . . . . 2. Tabla de Smbolos

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

11 11 12 12 12 13 13 13 14 14 15 15 15 16 17

1. Funciones
Oracle incorpora una serie de instrucciones que permiten realizar clculos avanzados, o bien facilitar la escritura de ciertas expresiones. Todas las funciones reciben datos para poder operar (parmetros) y devuelven un resultado (que depende de los parmetros enviados a la funcin. Los argumentos se pasan entre parntesis: nombreFuncin [(parmetro1[, parmetro2,...])]

Si una funcin no precisa parmetros (como SYSDATE) no hace falta colocar los parntesis.

1.1. Funciones Numricas


En este seccin se introducir una serie de funciones ms signicativas de este tipo. Y dentro de este tipo se han escogidos las siguientes funciones clasicadas en dos grupos. Matemticas (SIN, COS, TAN, SQRT, ABS, SIGN, POWER, EXP, MOD, LOG). Redondeo (CEIL, FLOOR, ROUND, TRUC).

1.1.1. SIN
Esta funcin devuelve el seno del parmetro p introducido, donde p tiene que estar en radianes (un radin son 180/ grados, aproximadamente 57.296 ), y cuya sintaxis (1.1.1), ejemplo (1.1.1) y salida (1.1.1) se muestran a continuacin:
SIN (parmetro p)

SELECT SIN(1) FROM DUAL;

SIN(1) ---------.841470985

1.1.2. COS
Esta funcin devuelve el coseno del parmetro p introducido, donde p tiene que estar en radianes (un radin son 180/ grados, aproximadamente 57.296 ), y cuya sintaxis (1.1.2), ejemplo (1.1.2) y salida (1.1.2) se muestran a continuacin:
COS (parmetro p)

SELECT COS(3.14) FROM DUAL;

COS(3.14) ----------.99999873

1.1.3. TAN
Esta funcin devuelve la tangente del parmetro p introducido, donde p tiene que estar en radianes (teniendo especial cuidado en valores que no acepta la funcin tangente, /2 + n, n N), y cuya sintaxis (1.1.3), ejemplo (1.1.3) y salida (1.1.3) se muestran a continuacin:
TAN (parmetro p)

SELECT TAN(0.7853) FROM DUAL;

TAN(0.7853) ----------.999803692

1.1.4. SQRT
Esta funcin devuelve la raz cuadrada del parmetro p introducido, donde p tiene que ser mayor o igual a cero atendiendo a la deniendo de la funcin raz cuadrado que no acepta estos valores devolviendo un nmero real, y cuya sintaxis (1.1.4), ejemplo (1.1.4) y salida (1.1.4) se muestran a continuacin:
SQRT (parmetro p)

SELECT SQRT(8.99) FROM DUAL;

SQRT(8.99) ---------2.99833287

1.1.5. ABS
Esta funcin devuelve el valor absoluto del parmetro p introducido, y cuya sintaxis (1.1.5), ejemplo (1.1.5) y salida (1.1.5) se muestran a continuacin:
ABS (parmetro p)

SELECT ABS(8.99), ABS(-8.99) FROM DUAL;

ABS(8.99) ABS(-8.99) ---------- ---------8.99 8.99

1.1.6. SIGN
Esta funcin devuelve el signo del parmetro p introducido, para ello, viene codicado: if p = 0 0 1 if p > 0 SIN G(p) = 1 if p < 0 Cuya sintaxis (1.1.6), ejemplo (1.1.6) y salida (1.1.6) se muestran a continuacin:
SIGN (parmetro p)

SELECT SIGN(8.99), SIGN(-8.99), SIGN(0) FROM DUAL;

SIGN(8.99) SIGN(-8.99) SIGN(0) ---------- ----------- ---------1 -1 0

1.1.7. POWER
Esta funcin requiere de dos parmetros de entrada, uno ser la base y el otro sr el exponente. Por lo que, esta funcin devolver el valor obtenido de elevar a la base el exponente. Y donde cuya sintaxis (1.1.7), ejemplo (1.1.7) y salida (1.1.7) se muestran a continuacin:
POWER (base, exponente)

SELECT POWER(2.3,3) FROM DUAL;

POWER(2.3,3) -----------12.167

1.1.8. EXP
Esta funcin es similar a la anterior 1.1.7, salvo que sta slo requiere de un parmetro (exponente) y la base aqu siempre es e. Por lo que, esta funcin devolver el valor obtenido del exponente en base e. Y donde cuya sintaxis (1.1.8), ejemplo (1.1.8) y salida (1.1.8) se muestran a continuacin:
EXP (exponente)

SELECT EXP(1) FROM DUAL;

EXP(1) ---------2.71828183

1.1.9. MOD
Esta funcin devuelve un entero que es el resto obtenido de dividir el p1 entre el p2, y cuya sintaxis (1.1.9), ejemplo (1.1.9) y salida (1.1.9) se muestran a continuacin:
MOD (parmetro1 p1, parmetro2 p2)

SELECT MOD(19,5) FROM DUAL;

MOD(19,5) ---------4

1.1.10. LOG
Esta funcin devuelve el logaritmo en base b del parmetro p (la funcin slo est denida para b y p mayores que cero), y cuya sintaxis (1.1.10), ejemplo (1.1.10) y salida (1.1.10) se muestran a continuacin:
LOG ( base b, parmetro p)

SELECT LOG(10, 1) FROM DUAL;

LOG(10,1) ---------0

1.1.11. CEIL
Esta funcin devuelve el valor entero inmediatamente superior o igual al parmetro p, y cuya sintaxis (1.1.11), ejemplo (1.1.11) y salida (1.1.11) se muestran a continuacin:
CEIL (parmetro p)

SELECT CEIL(3.1), CEIL(3), CEIL(3.6) FROM DUAL;

CEIL(3.1) CEIL(3) CEIL(3.6) ---------- ---------- ---------4 3 4

1.1.12. FLOOR
Esta funcin devuelve el valor entero inmediatamente inferior o igual al parmetro p, y cuya sintaxis (1.1.12), ejemplo (1.1.12) y salida (1.1.12) se muestran a continuacin:
FLOOR (parmetro p)

SELECT FLOOR(3.1), FLOOR(3), FLOOR(3.6) FROM DUAL;

FLOOR(3.1) FLOOR(3) FLOOR(3.6) ---------- ---------- ---------3 3 3

1.1.13. ROUND
Esta funcin redondea a n posiciones decimales. Si se omite n no se redondea con lugares decimales. Y si n es negativo los nmeros a la izquierda del punto decimal se redondean. La sintaxis (1.1.13), ejemplo (1.1.13) y salida (1.1.13) se muestran a continuacin:
ROUND (parmetro p [, n])

SELECT ROUND (45.923, 2), ROUND (45.923, 0), ROUND (45.923, -1) FROM DUAL;

ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1) --------------- --------------- ---------------45.92 46 50

1.1.14. TRUNC
Esta funcin trunca la columna o valor con precisin de dgitos atendiendo a n. Si se omite n, sin lugares decimales. Y si n es negativo, los nmeros a la izquierda del punto decimal se truncan a cero. La sintaxis (1.1.14), ejemplo (1.1.14) y salida (1.1.14) se muestran a continuacin:
TRUNC (parmetro p [, n])

SELECT TRUNC (45.923, 2), TRUNC (45.923), TRUNC (45.923, -1) FROM DUAL;

TRUNC(45.923,2) TRUNC(45.923) TRUNC(45.923,-1) --------------- ------------- ---------------45.92 45 40

1.2. Funciones de Cadenas de Caracteres


En este seccin se introducir una serie de funciones ms signicativas de este tipo. Y dentro de este tipo se han escogidos las siguientes funciones clasicadas en dos grupos. Manipulacin (CONCAT, LENGTH, REPLACE, TRIM, LTRIM, RTRIM, LPAD, RPAD, SUBSTR, TO_CHAR). Transformacin (INITCAP, UPPER, LOWER).

1.2.1. CONCAT
Esta funcin concatena dos cadenas de caracteres. Es equivalente al operador concatenacin ||. La sintaxis (1.2.1), ejemplo (1.2.1) y salida (1.2.1) se muestran a continuacin:
CONCAT (cadena1 c1, cadena2 c2)

SELECT CONCAT (BASE DE, DATOS) AS CONCATENAR1, (BASE DE || DATOS) AS CONCATENAR2 FROM DUAL;

CONCATENAR1 CONCATENAR2 ------------- ------------BASE DE DATOS BASE DE DATOS

1.2.2. INITCAP
Esta funcin convierte la primera letra de cada palabra en maysculas y el resto de letras en minsculas. La sintaxis (1.2.2), ejemplo (1.2.2) y salida (1.2.2) se muestran a continuacin:
INITCAP (cadena c)

SELECT INITCAP (BASE DE DATOS) AS INITCAP FROM DUAL;

INITCAP ------------Base De Datos

1.2.3. UPPER
Esta funcin convierte en maysculas las cadenas de caracteres en minsculas. La sintaxis (1.2.3), ejemplo (1.2.3) y salida (1.2.3) se muestran a continuacin:
UPPER (cadena c)

SELECT UPPER (Base DE datos) AS UPPER FROM DUAL;

UPPER ------------BASE DE DATOS

1.2.4. LOWER
Esta funcin convierte en maysculas las cadenas de caracteres en minsculas. La sintaxis (1.2.4), ejemplo (1.2.4) y salida (1.2.4) se muestran a continuacin:
LOWER (cadena c)

SELECT LOWER (Base DE datos) AS LOWER FROM DUAL;

LOWER ------------base de datos

1.2.5. LENGTH
Esta funcin devuelve la longitud de una cadena de caracteres. La sintaxis (1.2.5), ejemplo (1.2.5) y salida (1.2.5) se muestran a continuacin:
LENGTH (cadena c)

SELECT LENGTH (Base DE datos) AS LENGTH FROM DUAL;

10

LENGTH ---------13

1.2.6. REPLACE
Esta funcin busca el texto a buscar (en un determinado texto) y lo cambia por el indicado como texto de reemplazo. La sintaxis (1.2.6), ejemplo (1.2.6) y salida (1.2.6) se muestran a continuacin:
REPLACE(texto, textoABuscar, textoReemplazo)

SELECT REPLACE (Base DE dat, dat, datos) AS REPLACE FROM DUAL ;

REPLACE ------------Base DE datos

1.2.7. TRIM
Esta funcin elimina del texto los caracteres indicados a la izquierda y a la derecha. Aunque se podra eliminar slo los de la izquierda (leading), los de la derecha (trailing) o ambos (both), aunque para ello, ser mejor utilizar RTRIM (1.2.8), LTRIM (1.2.8) TRIM (1.2.7). Sino se aade los caracteres se elige el espacio. La sintaxis (1.2.7), ejemplo (1.2.7) y salida (1.2.7) se muestran a continuacin:
TRIM ( [ [leading | trailing | both] ) trim_character FROM ] cadena

SELECT TRIM ( BASE DE DATOS ) AS TRIM_ESP, TRIM(* FROM *** BASE DE DATOS****) AS TRIM_FROM FROM DUAL;

TRIM_ESP TRIM_FROM ------------- ------------BASE DE DATOS BASE DE DATOS

11

1.2.8. LTRIM y RTRIM


Esta funcin suprime un conjunto de caracteres a la izquierda (RTRIM a la derecha) de la cadena, carsup es el conjunto de caracteres que se van a suprimir y sino se especica es el espacio. Esta funcin devuelve entonces la cadena con el conjunto de caracteres carsup o espacios omitidos por la izquierda de la cadena. La sintaxis (1.2.8), ejemplo (1.2.8) y salida (1.2.8) se muestran a continuacin:
LTRIM (cadena [,carsup]) RTRIM (cadena [,caracter])

SELECT LTRIM( BASE) L, LTRIM(BASE, BA) LCARSUP, RTRIM (BASE ) R, RTRIM(BASE, ASE) RCARSUP FROM DUAL;

L LCARSUP R RCARSUP ---- ------- ---- ------BASE SE BASE B

1.2.9. LPAD y RPAD


Esta funcin justica a la derecha (RPAD a la izquierda) con un ancho de n y rellena con un carcter o string los espacios vacos. La sintaxis (1.2.9), ejemplo (1.2.9) y salida (1.2.9) se muestran a continuacin:
LPAD(texto, anchuraMxima [, caracterDeRelleno]) RPAD(texto, anchuraMxima [, caracterDeRelleno])

SELECT LPAD(BASE, 2) L, LPAD(BASE, 6, *) L, RPAD(BASE,7,0 ) R FROM DUAL;

L L R -- ------ ------BA **BASE BASE000

1.2.10. SUBSTR
Esta funcin obtiene los m siguientes caracteres del texto a partir de la posicin n (si m no se indica se cogen desde n hasta el nal). La sintaxis (1.2.10), ejemplo (1.2.10) y salida (1.2.10) se muestran a continuacin:
SUBSTR(texto,n[,m])

12

SELECT SUBSTR(BASE DE DATOS, 2, 4) S1, SUBSTR(BASE DE DATOS, 2) S2 FROM DUAL;

S1 S2 ---- -----------ASE ASE DE DATOS

1.2.11. TO_CHAR
Esta funcin obtiene un texto a partir de un nmero o una fecha. En especial se utiliza con fechas (ya que de nmero a texto se suele utilizar de forma implcita (ver 2). La sintaxis (1.2.11), ejemplo (1.2.11) y salida (1.2.11) se muestran a continuacin:
TO_CHAR(valor, formato)

SELECT TO_CHAR(1210.73, 9999.9) C1, TO_CHAR(1210.73, $9,999.000 ) C2, TO_CHAR(SYSDATE, FMMonth DD, YYYY) C3 FROM DUAL;

C1 C2 C3 ------- ----------- -----------------1210.7 $1,210.730 November 1, 2012

1.3. Funciones de Manejo de Fechas


En este seccin se introducir una serie de funciones ms signicativas de este tipo. Y dentro de este tipo se han escogidos las siguientes funciones clasicadas en dos grupos. Calcular fecha (ADD_MONTHS, MONTHS_BETWEEN, NEXT_DAY, LAST_DAY). Obtener la fecha (SYSDATE, CURRENT_DATE, TO_DATE).

1.3.1. ADD_MONTHS
Esta funcin aade a la fecha el nmero de meses indicado por n. La sintaxis (1.3.3), ejemplo (1.3.3) y salida (1.3.3) se muestran a continuacin:
ADD_MONTHS(fecha,n)

13

SELECT ADD_MONTHS(01-Aug-03, 3) FECHA FROM DUAL;

FECHA --------01-NOV-03

1.3.2. MONTHS_BETWEEN
Esta funcin obtiene la diferencia en meses entre las dos fechas (puede ser decimal) (ver 1.3.7). La sintaxis (1.3.3), ejemplo (1.3.3) y salida (1.3.3) se muestran a continuacin:
MONTHS_BETWEEN(fecha1,fecha2)

SELECT MONTHS_BETWEEN(TO_DATE(2003/01/01, yyyy/mm/dd), TO_DATE( 2003/03/14, yyyy/mm/dd)) DIF FROM DUAL;

DIF ----------2.4193548

1.3.3. SYSDATE
Esta funcin obtiene la fecha y hora actuales. La sintaxis (1.3.3), ejemplo (1.3.3) y salida (1.3.3) se muestran a continuacin:
SYSDATE

SELECT SYSDATE FROM DUAL;

SYSDATE --------10-NOV-12

14

1.3.4. NEXT_DAY
Esta funcin indica cual es el da que corresponde a aadir a la fecha el da indicado. El da puede ser el texto Lunes, Martes, Mircoles,... (si la conguracin est en espaol) o el nmero de da de la semana (1=lunes, 2=martes,...). La sintaxis (1.3.4), ejemplo (1.3.4) y salida (1.3.4) se muestran a continuacin:
NEXT_DAY(fecha,da)

SELECT NEXT_DAY(01-Aug-03, TUESDAY) FECHA FROM DUAL;

FECHA --------05-AUG-03

1.3.5. LAST_DAY
Esta funcin obtiene el ltimo da del mes al que pertenece la fecha (ver 1.3.7. Devuelve un valor DATE. La sintaxis (1.3.5), ejemplo (1.3.5) y salida (1.3.5) se muestran a continuacin:
LAST_DAY(fecha)

SELECT LAST_DAY(to_date(2003/03/15, yyyy/mm/dd)) FECHA FROM DUAL;

FECHA --------31-MAR-03

1.3.6. CURRENT_DATE
Esta funcin obtiene la fecha y hora actuales e incluye la zona horaria. Devuelve un valor DATE. La sintaxis (1.3.6), ejemplo (1.3.6) y salida (1.3.6) se muestran a continuacin:
CURRENT_DATE

SELECT CURRENT_DATE FECHA FROM DUAL;

15

FECHA --------10-NOV-12

1.3.7. TO_DATE
Esta funcin convierte textos en fechas. Como segundo parmetro se utilizan los cdigos de formato de fechas comentados en 2. La sintaxis (1.3.7), ejemplo (1.3.7) y salida (1.3.7) se muestran a continuacin:
TO_DATE(fecha, formato)

SELECT TO_DATE(2003/07/09, yyyy/mm/dd) f1, TO_DATE(20020315, yyyymmdd) f2 FROM DUAL;

F1 F2 --------- --------09-JUL-03 09-JUL-03

16

2. Tabla de Smbolos
Fechas: En el caso de las fechas se indica el formato de conversin, que es una cadena que puede incluir estos smbolos (en una cadena de texto): Smbolo YY YYY YYYY SYYYY MM MON MONTH DY DAY DD Q WW D DDD AD A.D. BC B.C. J RN AM PM HH12 HH24 MI SS SSSS /., Signicado Ao en formato de dos cifras ltimas tres cifras del ao Ao en formato de cuatro cifras igual que el anterior, pero si la fecha es anterior al nacimiento de Cristo el ao aparece en negativo Mes en formato de dos cifras Las tres primeras letras del mes Nombre completo del mes Da de la semana en tres letras Da completo de la semana Da en formato de dos cifras Semestre Semana del ao Da de la semana (del 1 al 7) Da del ao Indicador de periodo Anno Domini (despus de Cristo) Indicador de periodo, antes de Cristo. Aparece en fechas anteriores al ao cero (en espaol se pone AC) Ao juliano Mtodo Romano de numeracin Indicador AM Indicador PM Hora de 1 a 12 Hora de 0 a 23 Minutos (0 a 59) Segundos (0 a 59) Segundos desde medianoche Posicin de los separadores

Nmeros: Para convertir nmeros a textos se usa est funcin cuando se desean caractersticas especiales. En ese caso en el formato se pueden utilizar estos smbolos: Smbolo 9 0 S $ L C D G RN rn PR . , Signicado Posicin del nmero Posicin del nmero (muestra ceros) En esa posicin se coloca el signo del nmero (tanto el negativo como el positivo) Formato dlar Smbolo local de la moneda Smbolo internacional de moneda (segn la conguracin local de Oracle) Posicin del smbolo decimal (en espaol, la coma) Posicin del separador de grupo (en espaol el punto) Numeracin romana en maysculas Numeracin romana en minsculas Se muestran los negativos entre smbolos <y > Posicin del decimal Posicin del separador de miles

17

Referencias
[2] http://www.jorgesanchez.net/bd/oracleSQL.pdf [3] http://es.scribd.com/doc/58393914/Funciones-Oracle-SQL [4] http://www.desarrolloweb.com/articulos/1899.php [5] http://www.devjoker.com/contenidos/catss/67/Funciones-integradas-de-PLSQL.aspx

[1] http://www.techonthenet.com/searchresults.php?cx=partner-pub-9252326275773521%3A1283011236&cof=FORID%3A10&i

18