Toto je část kurzu Oracle SQL a obsahuje dobré příklady, vysvětlení jednořádkových funkcí v Oracle Sql
Funkce jsou programy, které přebírají nula nebo více argumentů a vracejí jedinou hodnotu.
Funkce mohou být jednořádkové, víceřádkové
Budeme zde diskutovat o jednořádkových funkcích v SQL
Co jsou funkce jednoho řádku v Oracle SQL
Jednořádkové funkce jsou vestavěné funkce a zahrnují znaky, čísla, datum, převod a uživatelem definované funkce.
Všechny jednořádkové funkce lze použít v programech SQL nebo PL/SQL a lze je použít v klauzulích SELECT, WHERE a ORDER BY.
Jednořádkové funkce zahrnují TO_CHAR, TO_DATE, UPPER, LOWER atd
Jednořádkové funkce lze použít také v klauzuli SET a příkazu UPDATE. Jednořádkové funkce nelze použít v klauzuli HAVING.
Podívejme se na různé důležité funkce jednoho řádku
Funkce znaků v SQL
Funkce znaků jsou:
LOWER(‘char’) :převést řetězec na malá písmena
SQL> vybrat ename z "EMP";ENAME----------BlakeClarkScottSQL> vybrat nižší(ename) z "EMP";LOWER(ENAM----------blakeclarkscottUPPER(‘CHAR’) :převod řetězce na velká písmena
SQL> vyberte horní(jméno) z "EMP";UPPER(ENAM----------BLAKECLARKSCOTTINITCAP(‘Char’) :vrací řetězec s prvním písmenem každého slova velkým
SQL> vyberte initcap(ename) z "EMP";INITCAP(EN----------BlakeClarkScottCONCAT – Funkce má limit dvou parametrů.
SQL> vyberte concat(ename,DEPTNO) z emp;CONCAT(ENAME,DEPTNO)----------------------------- ---------------------Blake10Clark10Scott20SQL> select concat(ename,empno,DEPTNO) from emp;select concat(ename,empno,DEPTNO) from emp *ERROR at line 1:ORA-00909:neplatný počet argumentůLENGTH :vrátí délku řetězce
SQL> vyberte ename,length(ename) z emp;ENAME LENGTH(ENAME)---------- --------------Blake 5Clark 5Scott 5LENGTHB:vrací délku řetězce v bajtech
SQL> vyberte ename,length(ename),lengthb(ename) z emp;ENAME LENGTH(ENAME) LENGTHB(ENAME)---------- ----------- -- --------------Blake 5 5Clark 5 5Scott 5 5INSTR :vrací index hledaného řetězce v řetězci,
SQL> vyberte ename,instr(ename,'A') z emp;ENAME INSTR(ENAME,'A')---------- ------------ ----Blake 0Clark 0Scott 0SQL> vyberte ename,instr(ename,'a') z emp;ENAME INSTR(ENAME,'A')---------- -------- --------Blake 3Clark 3Scott 0LPAD:levý pad řetězec s n znaky
SQL> vyberte ename,lpad(ename,12) z emp;ENAME LPAD(ENAME,12)---------- ---------------- --------------------Blake BlakeClark ClarkScott ScottSQL> vyberte ename,lpad(ename,12,'-') z emp;ENAME LPAD(ENAME,12,'- ')---------- ------------------------------------Blake - ------BlakeClark -------ClarkScott -------ScottLTRIM:odstranění úvodních znaků z řetězce
SQL> select ltrim(' name') from dual;LTRI----nameSQL> select ltrim(' name ') from dual;LTRIM('-------nameSQL> select LTRIM('000123' , '0') z duálního;LTR---123SQL> vyberte LTRIM('1000123', '0') z duálního;LTRIM('-------1000123REPLACE:provedení vyhledávání a nahrazení podřetězců
SELECT REPLACE('JACK and JUE','J','BL') "Změny" Z DUAL;Změny--------------BLACK and BLUESUBSTR – vrátí část řetězce zadanou v číselných hodnotách
SUBSTRB – stejně jako SUBSTR pouze s byty
SOUNDEX – vrátí fonetickou reprezentaci řetězce
TRANSLATE – provede vyhledání a nahrazení znaků
TRIM – počáteční a koncové znaky řetězcePříklady select emp_name, concat(emp_name,dept_name), length (ename),INSTR(ename, 'A') from dept;select lower(emp_name) from zamestnanec;select upper(first_name) from emp;Jak bylo vysvětleno, funkce jednoho řádku funguje na každém řádku
Související: Zpracování dekódování SQL SQL
Číselné funkce v SQL
Číselné funkce jsou:
ROUND :zaokrouhlí čísloSQL> vybrat round(3.456) z duálního;ROUND(3.456)------------ 3SQL> vybrat kolo(3.456,2) z duálního;ROUND(3.456,2)--- ----------- 3,46TRUNC :zkrátí číslo
MOD:vrátí modul, tj. zbytekSQL> select mod(4,2) from dual; MOD(4,2)---------- 0SQL> vyberte mod(4,3) z dual; MOD(4,3)---------- 1SIGN:return kladné, záporné nebo nulové
CEIL – vrací nejbližší vyšší čísloSQL> select ceil(3.1) from dual; CEIL(3.1)---------- 4SQL> vyberte ceil(3) z dual; CEIL(3)---------- 3LOG – vrátí logaritmus
FLOOR – vrátí nejbližší menší čísloSQL> select floor(3.1) from dual;FLOOR(3.1)----------- 3SQL> select floor(3) from dual; PODLAŽÍ(3)---------- 3SQRT – vrátí druhou odmocninu čísla
Příklady SELECT SQRT(25) "Odmocnina" FROM DUAL;SELECT order_total, CEIL(order_total) FROM orders WHERE order_id =58758;Funkce data Oracle
Funkce Oracle Date jsou:
SYSDATE :vrácení aktuálního data
DUAL
MONTHS_BETWEEN (Vrátí číslo) :vrácení čísla měsíce mezi dvěma daty
ADD_MONTHS :přidání počtu měsíců do datum
NEXT_DAY :vrací se další den v týdnu po daném datu
LAST_DAY :vrací se poslední den v měsíci
DBTIMEZONE – vrátí časové pásmo databáze
TRUNC:zkrátí datum.
CURRENT_TIMESTAMP – vrací datum a čas ve formátu TIMESTAMPPříklady SQL> vyberte CURRENT_TIMESTAMP z duálního; CURRENT_TIMESTAMP------------------------------------------ ---------------------------------01-SEP-19 04.33.26.493097 PM +00:00SQL> vyberte sysdate od dual;SYSDATE---------------01-SEP-19Konverzní funkce explicitního typu
TO_CHAR -převede číslo nebo datum na VARCHAR2
TO_NUMBER :Převede znak na číslo
TO_DATE:Převede na datumPříklady SQL> vyberte to_char(sysdate ,'DD-MON-YYYY,MI') z dual 2;TO_CHAR(SYSDATE,'DD---------------------01- SEP-2019, 34Další funkce
NVL (expr1, expr2) a NVL3
NVL – přebírá dva argumenty:NVL(x1, x2), Vrátí x2, když x1 je NULL, nebo x1, když x1 není NULL. NVL2 – přebírá tři argumenty:NVL2(x1, x2, x3), vrátí x3, když x1 je NULL, nebo x2, když x1 není NULLDECODE Tato funkce funguje jako příkaz IF-THEN-ELSE nebo CASE.
COALESCE – vrátí první nenulovou hodnotu v seznamu
SYS_CONTEXT – vrátí systémové atributy
UID – vrátí číselné ID uživatele pro aktuální relaciMalý kvíz k otestování znalostí o jednořádkových funkcích v SQL
Otázka 1 :Používáte jednořádkové funkce v příkazu select. Kterou funkci lze nejlépe kategorizovat jako podobnou funkci příkazu if-then-else?
A) sqrt( )
B) dekódovat ( )
C) rowidtochar( )
D) new_time( )Vysvětlení:
Funkce decode() funguje jako klauzule if-then-else ve vašich příkazech SQL. Volba sqrt() je nesprávná, protože sqrt() vytváří
druhou odmocninu čísla. Volba new_time() je nesprávná, protože funkce new_time() vrací nový čas na základě hodnot zadaných ve volání této funkce.Konečně volba rowidtochar() je nesprávná, protože rowidtochar() je funkce, která převádí informace ROWID na informace CHAR.
Otázka 2:
Chcete ve svých příkazech SQL používat jednořádkové funkce. Které tři z následujících jsou číselné funkce? (Vyberte tři ze čtyř.)
A) sinh( )
B) sqrt( )
C) to_number( )
D) round( )
Vysvětlení:
Jediná nečíselná funkce v tomto list je funkce to_number(),
což je převodní operace.Otázka 3 Následující příkaz SQL byl převzat z relace SQL*Plus:
select decode(EMPNO, 74765, 'INACTIVE', 'ACTIVE') empno z DEPT
kde substr(ENAME,1,1)> to_number ('V') a EMPNO> 1000
objednejte EMPNO desc, ENAME asc;Který z následujících řádků v příkazu select zobrazeném v
předchozím bloku kódu obsahuje chybu?A) vyberte decode(EMPNO, 58385, 'INACTIVE', 'ACTIVE') empno
B) z EMP
C) a EMPNO> 02000
D), kde substr(ENAME,1,1 )> to_number('S')
E) pořadí podle EMPNO desc, ENAME asc;Vysvětlení:(D)
Abecední znaky, například S, nelze převést na čísla. Když je tento příkaz spuštěn, způsobí na tomto řádku chybu.
Ostatní řádky v tomto dotazu jsou správné.
Otázka 4 Který příkaz SELECT získá výsledek ‚elloworld‘ z řetězce ‚HelloWorld‘?
A. SELECT SUBSTR( ‘AhojSvěte’,1) FROM duální;
B. SELECT INITCAP(TRIM (‘HelloWorld‘, 1,1)) FROM dual;
C. SELECT LOWER(SUBSTR('HelloWorld', 1, 1) FROM duální;
D. SELECT LOWER(SUBSTR('AhojSvěte', 2, 1) FROM duální;
E. SELECT LOWER(TRIM (' H' FROM 'HelloWorld')) FROM dual;
Odpověď:EDoufám, že se vám tento příspěvek o funkcích jednoho řádku v SQL líbí. Uveďte prosím zpětnou vazbu
Související články
Analytické funkce v oracle:Funkce Oracle Analytic počítají agregovanou hodnotu na základě skupiny řádků pomocí klauzule přes rozdělení podle klauzule oracle, liší se od agregačních funkcí
rank v oracle:RANK, DENSE_RANK a ROW_NUMBER jsou analytické oracle funkce, které se používají k řazení řádků ve skupině řádků nazvané window
Funkce vedení v oracle :Podívejte se na funkci LAG v Oracle &Lead function v Oracle, jak je používat v analytických dotazech a jak to funguje v Oracle sql
Nejčastější dotazy v Oracle :Na této stránce se dozvíte, jak prozkoumat různé způsoby, jak dosáhnout nejlepších N dotazů v Oracle a stránkování v databázi Oracle dotazů.