Viernes, 12 Junio 2020 03:27

Algunas Funciones Útiles, SQL

Rate this item
(1 Vote)

Objetivos:

•Familiarizarse con Funciones Útiles en PL/SQL.

•Adquirir mas flexibilizad en el desarrollo de soluciones complejas.


Función SIGN

SIGN es una función numérica que determina el signo(NegativoPositivo; Cero) del Número que recibe. Si el parámetro es menor que 0 retorna -1, si es 0 retorna 0 y si es mayor que 0 dicha función retorna 1.

Sintaxis:

SIGN(n)

Donde:

• n es el numero a cual queremos determinar el Signo.

Ejemplo:

SELECT SIGN(-563) AS NEGATIVO,
       SIGN(0) AS CERO,
       SIGN(100) AS POSITIVO
FROM dual;

--OUTPUT: -1,0,1.


Función POWER

POWER es una función numérica que eleva un numero 'm' a la potencia de 'n'. La función recibe dos parámetros(m,n) y retorna 'm' elevado a la'n'.

Sintaxis:

POWER(m,n)

Donde:

m es la Base.

n es el Exponente.

Ejemplo:

SELECT POWER(6,2) CUATRADO,
       POWER(3,3) CUBO,
       POWER(5,4) "A LA 4TA"
FROM dual;

--OUTPUT: 36, 27, 625


Función GREATEST

GREATEST es una función que retorna el mayor valor de una lista de expresiones dada. Cabe destacar que aunque su uso es mas común con valores numéricos, dicha función recibe cualquier tipo de dato como parámetros, esto es debido a que la conversion se realiza en valores Binarios.

Detalles:

•Si las expresiones que recibe la función son de tipos de datos diferentes, todas las expresiones serán convertidas al tipo de dato de la primera expresión(si es posible).

•Si la primera es carácter, las siguientes expresiones(Números/Fechas) serán convertidas a carácter y luego comparadas.

•Si la primera es numérica, las siguientes expresiones deben ser numéricas ya que la conversion de (Caracteres /Fechas) a Número no es posible.

•Si la primera es una fecha, las siguientes expresiones deben ser de tipo fecha ya que la conversion de (Caracteres /Números) a Fecha no es posible.

Sintaxis:

GREATEST(expr1[, expr2, ... expr_n])

Donde:

expr1, expr2, ... exprn son las expresiones a ser evaluadas.


Ejemplos:

 
SELECT GREATEST(45,60,25,-689) números,
       GREATEST('HOLA MUNDO',-6,999,SYSDATE) caracteres,
       GREATEST(SYSDATE, TO_DATE('26/04/2017','DD/MM/YYYY')) fechas,
       GREATEST('HG',SYSDATE) carácter,
       GREATEST('HOLA MUNDO','hola mundo') "minúscula > MAYÚSCULA"
FROM dual;

/*Los resultados del Query anterior son los siguientes: 60, HOLA MUNDO, 26-APR-17, HG, hola mundo; la primera columna muestra '60', ya que es el mayor número; la 2da columna muestra 'HOLA MUNDO', ya que luego de convertir las demás expresiones a VARCHAR2 esta cadena resultó tener un mayor valor binario; la tercera muestra '26-APR-17', ya que es una fecha posterior a mi fecha actual; la 4ta muestra 'HG', ya que su valor binario es mayor al valor binario de mi fecha convertida a carácter; la 5ta muestra la cadena 'hola mundo', debido a que su correspondiente en mayúsculas tiene un menor valor binario.*/


Función TRANSLATE

TRANSLATE reemplaza una secuencia de caracteres en una cadena con otra secuencia de caracteres. Dicho reemplazo se realiza carácter por carácter de esta manera:

Sintaxis:

TRANSLATE( string, from_string, to_string)

Explicación

string es la cadena a traducir.

from_string es la secuencia de caracteres a ser reemplazada.

to_string es la secuencia de caracteres que se usará para reemplazar a from_string.

TRANSLATE retorna string con las ocurrencias de cada carácter en from_string reemplazado por su correspondiente en to_string. Los caracteres en string que no están en from_string no son tomados en cuenta. La cadena from_string puede ser mayor que to_string. Si es así, los caracteres extras al final de from_string no tienen correspondiente en to_string, y por esta razón, dichos caracteres son removidos en string(si string los contiene).

Ejemplos:

 
SELECT
     TRANSLATE('12345MUNDO576893','231459786', 'OLHA ECUR') AS MUNDO,
     TRANSLATE('GRITAr, patear, sufRir','rGRIptesufai','RCANREIGOZ') AS GOZAR,
     TRANSLATE('¡Hoy es un_ dia GRANDE!!!','ANDeoy¡unia_HrGRE!s', 'dayaatWBIayGhoTo') AS "HOY"
FROM dual;

/*El OUTPUT y lógica de reemplazo del Query anterior:*/

/*Los caracteres en la parte de arriba(Este) se reemplazan por su equivalente en la parte de abajo(Por este); los que no tiene equivalentes y que pertenecen a la Cadena a traducir son eliminados; los caracteres de la Cadena a traducir que no se encuentren en los caracteres a reemplazar no sufren cambio.*/


Función ASCIISTR

ASCIISTR es una función que recibe como parámetro un cadena de caracteres con cualquier conjunto de caracteres(Character Set) y retorna la version ASCII de dicha cadena usando el conjunto de caracteres de la Base de Datos.

 

Sintaxis:

ASCIISTR ( string)

Donde:

string es la cadena a convertir a su version ASCII.

Ejemplo:

CREATE TABLE con_acento
( string_id NUMBER(4) CONSTRAINT pk_id PRIMARY KEY,
  string VARCHAR2(30) CONSTRAINT n_null NOT NULL
      CONSTRAINT un_str UNIQUE
);

DESC con_acento;

/*Creamos una tabla para nuestro ejemplo.*/

 

CREATE SEQUENCE sq
INCREMENT BY 1
CACHE 15;

/*Y también creamos una secuencia.*/

 

INSERT INTO con_acento(string_id, string)
VALUES(sq.NEXTVAL,'¿Que?');

INSERT INTO con_acento(string_id, string)
VALUES(sq.NEXTVAL,'Asiático');

INSERT INTO con_acento(string_id, string)
VALUES(sq.NEXTVAL,'Avión');

INSERT INTO con_acento(string_id, string)
VALUES(sq.NEXTVAL,'Príncipe');

INSERT INTO con_acento(string_id, string)
VALUES(sq.NEXTVAL,'ñåño');

INSERT INTO con_acento(string_id, string)
VALUES(sq.NEXTVAL,'¡Wao!');
COMMIT;

/*Insertamos algunos textos con acento.*/

 

SELECT string AS texto,
       ASCIISTR(string) "Version ASCII"
FROM con_acento;

/*Acá vemos los resultados al aplicar la función ASCIISTR.*/


Función UNISTR

UNISTR es una función que convierte una cadena de caracteres en formato ASCII en texto Humano. Esta función podría entenderse como la inversa de ASCIISTR.

Sintaxis:

UNISTR (string)

Ejemplo:

 
CREATE TABLE texto_ascii
 AS SELECT string_id AS id_ascii,
           ASCIISTR(string) AS ascii
    FROM con_acento;

DESC texto_ascii;

/*Creamos una tabla basada en el ejemplo anterior.*/

 

 
SELECT ascii,
       UNISTR(ascii) AS "Texto"
FROM texto_ascii;

/*Acá Podemos ver como funciona la función UNISTR.*/


Fuente: docs.oracle.com

Read 431 times Last modified on Miércoles, 08 Julio 2020 15:29

Leave a comment

Make sure you enter all the required information, indicated by an asterisk (*). HTML code is not allowed.

Magic PL/SQL

Blog orientado al desarrollo de PL/SQL en el "Maravilloso Mundo ORACLE". Cursos Online y Tutoriales Gratis.