sql >> Databasteknik >  >> RDS >> Oracle

Enradsfunktioner i Oracle sql

Detta är en del av Oracle SQL tutorial och har bra exempel, förklaringar om enradsfunktioner i Oracle SQL

Funktioner är program som tar noll eller fler argument och returnerar ett enda värde.

Funktioner kan vara en rad, flera rader

Vi kommer att diskutera här Enkelradsfunktioner i SQL

Vad är enradsfunktioner i Oracle SQL

Enradsfunktioner är inbyggda funktioner och inkluderar tecken, siffror, datum, konvertering och användardefinierade funktioner.

Alla enradsfunktioner kan användas i SQL- eller PL/SQL-program och kan användas i SELECT-, WHERE- och ORDER BY-satserna.

Enkelradsfunktioner inkluderar TO_CHAR, TO_DATE, UPPER, LOWER etc

Enkelradsfunktioner kan också användas i SET-satsen och UPDATE-kommandot. Enkelradsfunktioner kan inte användas i en HAVING-sats.

Låt oss undersöka de olika viktiga enradsfunktionerna

Teckenfunktioner i  SQL

Teckenfunktionerna är:
LOWER(‘char’)  :konvertera sträng till gemener

SQL> select ename from  "EMP";

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

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

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

UPPER(‘CHAR’)  :konvertera sträng till versaler

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

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

INITCAP(‘Char’) :retur en sträng med första bokstaven i varje ord med versaler

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

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

CONCAT – Funktionen har en gräns med två parametrar.

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

LENGTH :retur tillbaka längden på strängen

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

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

LENGTHB:returnerar längden på en sträng i byte

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

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

INSTR :returerar indexet för sökt sträng inom en sträng,

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:vänster knapp en sträng med n tecken

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:ta bort inledande tecken från en sträng

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

ERSÄTT:utför en delsträngsökning och ersätt

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

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

SUBSTR – returnera en sektion av strängen specificerad i numeriska värden
SUBSTRB – samma som SUBSTR endast med bytes
SOUNDEX – returnera en fonetisk representation av en sträng
ÖVERSÄT – utför teckensökning och ersätt
TRIM – strängledande och efterföljande tecken i sträng

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;

Som förklarat fungerar enradsfunktionen på varje rad

Relaterat: Oracle sql-avkodningsbearbetning

Numeriska funktioner i SQL

Nummerfunktionerna är:
ROUND :avrundar ett tal

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 :trunkerar ett tal
MOD:returerar modulen, dvs resten

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

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

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

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

TECKN:retur positivt, negativt eller noll
CEIL – returnerar nästa högre nummer

SQL> select  ceil(3.1) from dual;

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

SQL> select  ceil(3) from dual;

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

LOG – returnera logaritmen
FLOOR – returnera nästa mindre tal

SQL> select  floor(3.1) from dual;

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

SQL> select  floor(3) from dual;

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

SQRT – returnera kvadratroten ur ett tal

Examples

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

Oracle Date Functions

Oracles datumfunktioner är:
SYSDATE :retur aktuellt datum
DUBBLA
MONTHS_BETWEEN (Returnerar ett tal) :returnummer för månad mellan två datum
ADD_MONTHS :lägg till ett antal månader till datum
NEXT_DAY :returerar nästa veckodag efter ett givet datum
LAST_DAY :retur sista dagen i månaden


DBTIMEZONE – returnera databasens tidszon
TRUNC:trunkerar ett datum.
CURRENT_TIMESTAMP – returnerar datum och tid i TIMESTAMP-format

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


Konverteringsfunktioner av explicit typ

TO_CHAR -konverterar tal eller datum till VARCHAR2
TO_NUMBER :Konverterar tecken till tal
TO_DATE:Det konverterar till datum

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

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

Övriga funktioner

NVL (expr1, expr2) och NVL3
NVL – tar två argument:NVL(x1, x2), Returnerar x2 när x1 är NULL eller x1 när x1 inte är NULL. NVL2 – tar tre argument:NVL2(x1, x2, x3), returnerar x3 när x1 är NULL eller x2 när x1 inte är NULL

DECODE Denna funktion fungerar som en IF-THEN-ELSE eller CASE-sats.
COALESCE – returnera det första icke-NULL-värdet i en lista
SYS_CONTEXT – returnera systemattribut
UID – returnera numeriskt användar-ID för aktuell session

Liten frågesport för att testa kunskaperna om enradsfunktioner i SQL

Fråga 1 :Du använder enradsfunktioner i en select-sats. Vilken funktion kan bäst kategoriseras som liknande funktion till ett if-then-else-uttalande?

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

Förklaring:

Funktionen decode( ) fungerar som en if-then-else-sats i dina SQL-satser. Valet sqrt( ) är felaktigt eftersom sqrt( ) producerar
kvadratroten ur ett tal. Valet new_time( ) är felaktigt eftersom funktionen new_time( ) returnerar en ny tid baserat på värden som anges i anropet till den funktionen.

Slutligen är valet rowidtochar( ) felaktigt eftersom rowidtochar( ) är en funktion som konverterar ROWID-information till CHAR-information.

Fråga 2:

Du vill använda enradsfunktioner i dina SQL-satser. Vilka tre av följande är talfunktioner? (Välj tre av de fyra.)

A) sinh( )
B) sqrt( )
C) to_number( )
D) round( )
Förklaring:
Den enda icke-nummerfunktionen i denna list är funktionen to_number( ),
som är en konverteringsoperation.

Fråga 3 Följande SQL-sats togs från en SQL*Plus-session:
välj decode(EMPNO, 74765, 'INACTIVE', 'ACTIVE') empno från DEPT
där substr(ENAME,1,1)> to_number ('V') och EMPNO> 1000
ordning efter EMPNO desc, ENAME asc;

Vilken av följande rader i select-satsen som visas i
föregående kodblock innehåller ett fel?

A) välj avkoda(EMPNO, 58385, 'INAKTIV', 'AKTIV') empno
B) från EMP
C) och EMPNO> 02000
D) där substr(ENAMN,1,1 )> to_number('S')
E) order by EMPNO desc, ENAME asc;

Förklaring:(D)
Tecken som är alfabetiska, till exempel S, kan inte omvandlas till siffror. När denna sats körs kommer den att ge ett fel på den här raden. De
övriga raderna i den här frågan är korrekta.

Fråga 4  Vilken SELECT-sats kommer att få resultatet 'elloworld' från strängen 'HelloWorld'?
A. SELECT SUBSTR( ‘HelloWorld’,1) FROM dual;
B. SELECT INITCAP(TRIM (‘HelloWorld’, 1,1)) FROM dual;
C. SELECT 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;
Svar:E

Hoppas du gillar det här inlägget om Single row-funktioner i SQL. Lämna gärna feedbacken

Relaterade artiklar
Analytiska funktioner i Oracle :Oracle Analytiska funktioner beräknar ett aggregerat värde baserat på grupp av rader genom att använda överpartition efter oracle-sats , de skiljer sig från aggregerade funktioner
rankas i Oracle:RANK, DENSE_RANK och ROW_NUMBER är orakelanalytiska funktion som används för att rangordna rader i gruppen av rader som kallas fönster
Lead-funktion i Oracle :Kolla in LAG-funktionen i Oracle &Lead-funktion i Oracle, hur man använder dem i analytiska frågor och hur det fungerar i Oracle sql
Top-N-frågor i Oracle:Kolla in den här sidan om att utforska de olika sätten att uppnå Top-N-frågor i Oracle och paginering i Oracle-frågeoracle-databasen.


  1. Hur man duplicerar tabell i MySQL

  2. postgresql generera sekvens utan mellanrum

  3. SQLalchemy begår inte ändringar vid inställning av roll

  4. Tidsbaserad prioritet i Active Record Query