Академический Документы
Профессиональный Документы
Культура Документы
Las funciones son parte intrnseca de cualquier comando SQL. Aqu se muestra una lista de las
funciones ms comunes.
ADD_MONTHS
CHARTOROWID
CONVERT
Tipo
Sintaxis
Retorna
Number
ABS(n)
Valor absoluto de n.
Date
ADD_MONTHS(a,b)
Character
ASCII(c)
Representacin decimal de c.
Group
AVG(DISTINCT|ALL n)
Number
CEIL(n)
Conversin
CHARTOROWID(c)
Character
CHR(n)
Character
CONCAT(1,2)
Conversion
Convierte
una
caracteres a de un
caracteres a otro.
hilera
conjunto
de
de
Number
COS(n)
Coseno de n.
Number
COSH(n)
Coseno hiperblico de n.
Group
COUNT(DISTINCT|ALL e)
Number
EXP(n)
Number
FLOOR(n)
GREATEST
Other
GREATEST(e [,e]...)
HEXTORAW
Conversin
HEXTORAW(c)
Convierte
de
una
hexadecimal a un raw.
Character
INITCAP(c)
Character
INSTR(1, 2 [, n [, m]])
Character
INSTRB(1,2[,n[,m]])
Date
LAST_DAY(a)
Other
LEAST(e [,e]...)
El
LAST_DAY
menor
de
una
carcter
lista
de
expresiones e.
LENGTHB
Character
LENGTH(c)
Nmero de caracteres en c. Si c es
un tipo de datos de largo fijo, todos
los blancos son incluidos.
Character
LENGTHB(c)
Number
LN(n)
Number
LOG(b,n)
Logaritmo en base b de n.
Character
LOWER(c)
c con todas
minsculas..
LPAD(1,n [,2])
Character
LTRIM(c [,set])
Other
MAX(DISTINCT|ALL e)
Other
MIN(DISTINCT|ALL e)
Character
las
letras
en
Number
MOD(r,n)
MONTHS_BETWEEN
Date
MONTHS_BETWEEN(a,b)
NEW_TIME
Date
NEXT_DAY
Date
NEXT_DAY(a, c)
Character
NLSSORT((c [,parm])
NLS_INITCAP
Character
NLS_INITCAP(c [,parm])
NLS_LOWER
Character
NLS_LOWER(c [,parm])
NLS_UPPER
Character
NLS_UPPER(c [,parm])
Other
NVL(e1, e2)
Number
POWER(m,n)
Conversin
RAWTOHEX(raw)
Character
REPLACE(c, s1 [, r2])
RAWTOHEX
su
ROWIDTOCHAR
SOUNDEX
SUBSTRB
Date
ROUND(n [,f])
Number
ROUND(n[,m])
n redondeado a m. Si m est, es
redondeado a m lugares.
Conversion
ROWIDTOCHAR(rowid)
Character
RPAD(1, n [, 2])
Character
RTRIM(c [, s])
Number
SIGN(n)
-1 if n < 0, 0 if n = 0, 1 if n > 0.
Number
SIN(n)
Seno de n
Number
SINH(n)
Seno hiperblico de n.
Character
SOUNDEX(c)
Character
SUBSTR(c, m [,n])
Character
SUBSTRB(c, m [,n])
Number
SQRT(n)
Raz cuadrada de n.
Group
STDDEV(DISTINCT|ALL n)
Desviacin estndar de n.
Group
SUM(DISTINCT|ALL n)
Suma de nmeros n.
Date
SYSDATE
Number
TAN(n)
Tangente de n.
Number
TANH(n)
Tangente hiperblica de n.
TO_CHAR
Conversion
TO_CHAR
Conversion
Conversion
TO_DATE(c [, f [, parm])
TO_MULTI_BYTE
Conversion
TO_MULTI_BYTE(c)
Convierte c a su equivalente en
multibyte.
TO_NUMBER
Conversion
TO_SINGLE_BYTE
Conversion
TO_SINGLE_BYTE(c)
TRANSLATE
VARIANCE
Character
TRANSLATE(c, f, t)
Date
TRUNC(c [,f])
Number
TRUNC(n[,m])
Other
UID
Other
USER
Character
UPPER(c)
Group
VARIANCE(DISTINCT|ALL n)
Varianza de n.
Other
VSIZE(e)
SELECT SUBSTR(address,1,20),
city
FROM customer
WHERE address IS NOT NULL
AND UPPER(city) = 'ROCHESTER'
Vase que UPPER hacer que al convertir a mayscula el nombre de la ciudad, har que si
'Rochester' aparece se convierta para luego compararse con 'ROCHESTER', de tal forma que sean
iguales.
El comando DECODE
Este es uno de los comandos ms importantes. El DECODE tiene la siguiente sintaxis:
SELECT e.ename,
e.job,
DECODE(e.job, 'President', '******', e.sal)
FROM emp e
WHERE e.empno IN (SELECT NVL(z.mgr, e.empno)
FROM emp z);
En esta consulta todos los nombres de los jefes sern obtenidos junto con su salario. Cuando la fila
del presidente es obtenida se presentar '******' en lugar de su salario.
Vase que con la funcin NVL para evaluar el manager_id. En este caso solo el presidente tiene el
manager_id nulo y por tanto no ser obtenido sin el NVL.
Aunque sal es de distinto tipo de '******', no da error pues Oracle hacer la conversin automtica de
sal a carcter.
SELECT e.ename,
e.job,
e.sal
FROM emp e
WHERE DECODE(USER,'PRES',e.empno, UPPER(e.ename),e.empno, 0) = e.empno;
En este caso, si el usuario es el presidente todos los empleados sern obtenidos, con los dems
empleados solo se obtiene el correspondiente salario.
SELECT e.ename,
e.job
DECODE(USER,'ADMIN', DECODE(e.job, 'PRESIDENT', '*****', e.sal),
'PRES', e.sal, '******')
FROM emp e
WHERE e.empno in (SELECT NVL(z.mgr, e.empno)
FROM emp z);
Ac se utiliza un DECODE anidado dentro de otro. Si el usuario Oracle es 'ADMIN' se muestra el
salario de todos excepto del presidente, si el usuario es el presidente presenta todos los salarios y
para cualquier otro solo asteriscos.
SELECT d.dname,
e.job,
e.ename
FROM emp e,
dept d
WHERE d.deptno = e.deptno
ORDER BY DECODE(e.job,'PRESIDENT', 0,
DECODE(d.dname,'SALES', 1, 'ADMIN', 2, 3)),
e.ename;
En este caso se utiliza el ORDER BY para ordenar segn el job, pero se ajusta para que aparezca
primero el presidente luego los vendedores, administradores y todos los dems. Luego del decode
son ordenados por el ename.
http://alejandria.nidaval.com/scripts/Editorial.dll?SE=2_1_0_T4_A454_205
Obsrvese que en la anterior consulta el valor de LEVEL para Felipe es igual a 1, ya en el rbol que
construye esta consulta, el nodo Felipe se encuentra en el primer nivel.
Si por el contrario, se desean conocer los padres de felipe, la consulta sera:
Obsverse en el anterior ejemplo, que el recorrido se hizo de abajo hacia arriba (en el rbol). El orden de las
columnas en la clausula CONNECT BY PRIOR, especifica el orden del recorrido. En el primer ejemplo se
tena:CONNECT BY PRIOR idPersona=hijoDe y se tuvo el recorrido del arbol de arriba a abajo. En el ultimo
ejemplo se tuvo CONNECT BY PRIOR hijoDe =idPersona, y el recorrido fue de abajo hacia arriba.
De igual manera, desde la versin 9i, fue incluida la funcin SYS_CONNECT_BY_PATH(), que concatena los
valores de las ramas del arbol en el recorrido.
El siguiente es un ejemplo de su utilizacin:
Es muy fcil entonces hacer consultas jerrquicas con la utilizacin de la clusula STARA WITH y CONNECT
BY y la funcin SYS_CONNECT_BY_PATH.
http://mioracle.blogspot.mx/2008/03/consultas-jerarquicas.html
2) Clusula HAVING se utiliza para filtrar las filas despus de que se han seleccionado todas las filas. Es
como un filtro. No utilice la clusula para ningn otro propsito HAVING.
Por ejemplo: Escribe la consulta como
SELECT name
FROM employee
WHERE (salary, age ) = (SELECT MAX (salary), MAX (age)
FROM employee_details)
AND dept = 'Electronics';
En lugar de:
SELECT name
FROM employee
WHERE salary = (SELECT MAX(salary) FROM employee_details)
AND age = (SELECT MAX(age) FROM employee_details)
AND emp_dept = 'Electronics';
5) USE existe en lugar de DISTINCT cuando se utiliza une que implica mesas tienen relacin uno-a-muchos.
Por ejemplo: Escribe la consulta como
SELECT id, first_name, age FROM student_details WHERE age > 10;
En lugar de: