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.