sql >> Base de Datos >  >> RDS >> Oracle

Funciones de una sola fila en Oracle sql

Esto es parte del tutorial de Oracle SQL y tiene buenos ejemplos, explicaciones sobre funciones de una sola fila en Oracle Sql

Las funciones son programas que toman cero o más argumentos y devuelven un único valor.

Las funciones pueden ser de una sola fila, funciones de varias filas

Discutiremos aquí las funciones de fila única en SQL

¿Qué son las funciones de fila única en Oracle SQL

Las funciones de una sola fila son funciones integradas e incluyen funciones de caracteres, numéricas, de fecha, de conversión y definidas por el usuario.

Todas las funciones de fila única se pueden usar en programas SQL o PL/SQL y se pueden usar en las cláusulas SELECT, WHERE y ORDER BY.

Las funciones de una sola fila incluyen TO_CHAR, TO_DATE, UPPER, LOWER, etc.

Las funciones de una sola fila también se pueden usar en la cláusula SET y en el comando UPDATE. Las funciones de una sola fila no se pueden usar en una cláusula HAVING.

Examinemos las diversas funciones importantes de una sola fila

Funciones de caracteres en  SQL

Las funciones de caracteres son:
LOWER('char')  :convertir cadena a minúsculas

SQL> select ename from  "EMP";

ENAME
----------
Blake
Clark
Scott

SQL> select lower(ename) from  "EMP";

LOWER(ENAM
----------
blake
clark
scott

UPPER('CHAR')  :convierte la cadena a mayúsculas

SQL> select upper(ename) from  "EMP";

UPPER(ENAM
----------
BLAKE
CLARK
SCOTT

INITCAP('Char'):devuelve una cadena con la primera letra de cada palabra en mayúsculas

SQL> select initcap(ename) from  "EMP";

INITCAP(EN
----------
Blake
Clark
Scott

CONCAT:la función tiene un límite de dos parámetros.

SQL> select concat(ename,DEPTNO) from emp;

CONCAT(ENAME,DEPTNO)
--------------------------------------------------
Blake10
Clark10
Scott20

SQL> select concat(ename,empno,DEPTNO) from emp;
select concat(ename,empno,DEPTNO) from emp
       *
ERROR at line 1:
ORA-00909: invalid number of arguments

LONGITUD:devuelve la longitud de la cadena

SQL> select ename,length(ename) from emp;

ENAME      LENGTH(ENAME)
---------- -------------
Blake                  5
Clark                  5
Scott                  5

LENGTHB:devuelve la longitud de una cadena en bytes

SQL> select ename,length(ename),lengthb(ename) from emp;

ENAME      LENGTH(ENAME) LENGTHB(ENAME)
---------- ------------- --------------
Blake                  5              5
Clark                  5              5
Scott                  5              5

INSTR:devuelve el índice de la cadena buscada dentro de una cadena,

SQL>  select ename,instr(ename,'A') from emp;

ENAME      INSTR(ENAME,'A')
---------- ----------------
Blake                     0
Clark                     0
Scott                     0

SQL>  select ename,instr(ename,'a') from emp;

ENAME      INSTR(ENAME,'A')
---------- ----------------
Blake                     3
Clark                     3
Scott                     0

LPAD:pad izquierdo una cadena con n caracteres

SQL>  select ename,lpad(ename,12) from emp;

ENAME      LPAD(ENAME,12)
---------- ------------------------------------
Blake             Blake
Clark             Clark
Scott             Scott

SQL> select ename,lpad(ename,12,'-') from emp;

ENAME      LPAD(ENAME,12,'-')
---------- ------------------------------------
Blake      -------Blake
Clark      -------Clark
Scott      -------Scott

LTRIM:elimina los caracteres iniciales de una cadena

SQL> select ltrim(' name') from dual;

LTRI
----
name

SQL> select ltrim(' name   ') from dual;

LTRIM('
-------
name

SQL> select  LTRIM('000123', '0') from dual;

LTR
---
123

SQL> select  LTRIM('1000123', '0') from dual;

LTRIM('
-------
1000123

REEMPLAZAR:realiza una búsqueda de subcadenas y reemplaza

SELECT REPLACE('JACK and JUE','J','BL') "Changes"
     FROM DUAL;

Changes
--------------
BLACK and BLUE

SUBSTR:devuelve una sección de cadena especificada en valores numéricos
SUBSTRB:igual que SUBSTR solo con bytes
SOUNDEX:devuelve una representación fonética de una cadena
TRANSLATE:realiza una búsqueda y reemplazo de caracteres
TRIM:cadena de caracteres iniciales y finales de la cadena

Examples

select emp_name, concat(emp_name,dept_name), length (ename),INSTR(ename, 'A') from dept;

select lower(emp_name) from employee;

select upper(first_name) from emp;

Como se explicó, la función de fila única funciona en cada fila

Relacionado: procesamiento de decodificación de Oracle sql

Funciones numéricas en Sql

Las Funciones Numéricas son:
ROUND :redondea un número

SQL>  select round(3.456) from dual;

ROUND(3.456)
------------
           3

SQL> select round(3.456,2) from dual;

ROUND(3.456,2)
--------------
          3.46

TRUNC:trunca un número
MOD:devuelve el módulo, es decir, el resto

SQL> select  mod(4,2) from dual;

  MOD(4,2)
----------
         0

SQL> select  mod(4,3) from dual;

  MOD(4,3)
----------
         1

SIGNO:devuelve positivo, negativo o cero
CEIL:devuelve el siguiente número más alto

SQL> select  ceil(3.1) from dual;

 CEIL(3.1)
----------
         4

SQL> select  ceil(3) from dual;

   CEIL(3)
----------
         3

LOG:devuelve el logaritmo
FLOOR:devuelve el siguiente número más pequeño

SQL> select  floor(3.1) from dual;

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

SQL> select  floor(3) from dual;

  FLOOR(3)
----------
         3

SQRT:devuelve la raíz cuadrada de un número

Examples

SELECT SQRT(25) "Square root" FROM DUAL;
SELECT order_total, CEIL(order_total) FROM orders WHERE order_id = 58758;

Funciones de fecha de Oracle

Las funciones de fecha de Oracle son:
SYSDATE:devuelve la fecha actual
DUAL
MONTHS_BETWEEN (devuelve un número):devuelve el número de mes entre dos fechas
ADD_MONTHS:agrega un número de meses a date
NEXT_DAY :regresa el siguiente día de la semana después de una fecha determinada
LAST_DAY :regresa el último día del mes


DBTIMEZONE:devuelve la zona horaria de la base de datos
TRUNC:trunca una fecha.
CURRENT_TIMESTAMP:devuelve la fecha y la hora en formato TIMESTAMP

Examples
SQL> select CURRENT_TIMESTAMP from dual;

CURRENT_TIMESTAMP
---------------------------------------------------------------------------
01-SEP-19 04.33.26.493097 PM +00:00

SQL> select sysdate from dual;

SYSDATE
---------------
01-SEP-19


Funciones de conversión de tipo explícito

TO_CHAR -convierte número o fecha a VARCHAR2
TO_NUMBER :Convierte carácter a número
TO_DATE:Convierte a fecha

Examples
SQL> select to_char(sysdate ,'DD-MON-YYYY,MI') from dual
  2  ;

TO_CHAR(SYSDATE,'DD-
--------------------
01-SEP-2019,34

Otras funciones

NVL (expr1, expr2) y NVL3
NVL:toma dos argumentos:NVL(x1, x2), devuelve x2 cuando x1 es NULL o x1 cuando x1 no es NULL. NVL2:toma tres argumentos:NVL2 (x1, x2, x3), devuelve x3 cuando x1 es NULL o x2 cuando x1 no es NULL

DECODE Esta función funciona como una instrucción IF-THEN-ELSE o CASE.
COALESCE:devuelve el primer valor no NULL de una lista
SYS_CONTEXT:devuelve los atributos del sistema
UID:devuelve el ID de usuario numérico para la sesión actual

Pequeño cuestionario para probar el conocimiento sobre funciones de fila única en SQL

Pregunta 1 :está utilizando funciones de una sola fila en una declaración de selección. ¿Qué función se puede categorizar mejor como similar en función a una declaración if-then-else?

A) sqrt( )
B) decodificar( )
C) rowidtochar( )
D) new_time( )

Explicación:

La función decode() actúa como una cláusula if-then-else en sus sentencias SQL. La opción sqrt( ) es incorrecta porque sqrt( ) produce la
raíz cuadrada de un número. La opción new_time( ) es incorrecta porque la función new_time( ) devuelve una nueva hora basada en los valores especificados en la llamada a esa función.

Finalmente, la opción rowidtochar() es incorrecta porque rowidtochar() es una función que convierte la información de ROWID en información de CHAR.

Pregunta 2:

Desea utilizar funciones de una sola fila en sus declaraciones SQL. ¿Cuáles de las siguientes tres son funciones numéricas? (Elija tres de los cuatro.)

A) sinh( )
B) sqrt( )
C) to_number( )
D) round( )
Explicación:
La única función no numérica en este list es la función to_number(),
que es una operación de conversión.

Pregunta 3 La siguiente instrucción SQL se tomó de una sesión de SQL*Plus:
select decode(EMPNO, 74765, 'INACTIVE', 'ACTIVE') empno from DEPT
where substr(ENAME,1,1)> to_number ('V') y EMPNO> 1000
ordenar por EMPNO desc, ENAME asc;

¿Cuál de las siguientes líneas en la instrucción de selección que se muestra en el
bloque de código anterior contiene un error?

A) seleccione decodificar (EMPNO, 58385, 'INACTIVO', 'ACTIVO') empno
B) de EMP
C) y EMPNO> 02000
D) donde substr(ENAME,1,1 )> to_number('S')
E) ordenar por EMPNO desc, ENAME asc;

Explicación:(D)
Los caracteres que son alfabéticos, como S, no se pueden convertir en números. Cuando se ejecuta esta declaración, producirá un error en esta línea. Las
otras líneas de esta consulta son correctas tal como están compuestas.

Pregunta 4  ¿Qué declaración SELECT obtendrá el resultado 'elloworld' de la cadena 'HelloWorld'?
A. SELECCIONE SUBSTR('HelloWorld',1) FROM dual;
B. SELECCIONE INITCAP(TRIM ('HelloWorld', 1,1)) FROM dual;
C. SELECCIONE LOWER(SUBSTR('HelloWorld', 1, 1) FROM dual;
D. SELECT LOWER(SUBSTR('HelloWorld', 2, 1) FROM dual;
E. SELECT LOWER(TRIM (' H' FROM 'HelloWorld')) FROM dual;
Respuesta:E

Espero que les guste esta publicación sobre funciones de una sola fila en SQL. Proporcione sus comentarios

Artículos relacionados
Funciones analíticas en Oracle:las funciones de Oracle Analytic calculan un valor agregado basado en un grupo de filas mediante el uso de la partición por cláusula de Oracle, difieren de las funciones agregadas
rango en Oracle:RANK, DENSE_RANK y ROW_NUMBER son analíticos de Oracle función que se utilizan para clasificar filas en el grupo de filas llamado ventana
Función principal en Oracle:consulte la función LAG en Oracle y la función principal en Oracle, cómo usarlas en consultas analíticas y cómo funciona en Oracle sql
Consultas Top-N en Oracle:Consulte esta página para explorar las diversas formas de lograr Consultas Top-N en Oracle y Paginación en Oracle Query Oracle Database.