sql >> Databáze >  >> RDS >> Oracle

Jednořádkové funkce v Oracle sql

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----------blakeclarkscott 

UPPER(‘CHAR’)  :převod řetězce na velká písmena

SQL> vyberte horní(jméno) z "EMP";UPPER(ENAM----------BLAKECLARKSCOTT

INITCAP(‘Char’) :vrací řetězec s prvním písmenem každého slova velkým

SQL> vyberte initcap(ename) z "EMP";INITCAP(EN----------BlakeClarkScott

CONCAT – 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 5

LENGTHB: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 5

INSTR :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 0

LPAD: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 -------Scott

LTRIM: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('-------1000123

REPLACE:provedení vyhledávání a nahrazení podřetězců

SELECT REPLACE('JACK and JUE','J','BL') "Změny" Z DUAL;Změny--------------BLACK and BLUE

SUBSTR – 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ězce

Pří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í číslo

SQL> 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,46

TRUNC :zkrátí číslo
MOD:vrátí modul, tj. zbytek

SQL> select mod(4,2) from dual; MOD(4,2)---------- 0SQL> vyberte mod(4,3) z dual; MOD(4,3)---------- 1

SIGN:return kladné, záporné nebo nulové
CEIL – vrací nejbližší vyšší číslo

SQL> select ceil(3.1) from dual; CEIL(3.1)---------- 4SQL> vyberte ceil(3) z dual; CEIL(3)---------- 3

LOG – vrátí logaritmus
FLOOR – vrátí nejbližší menší číslo

SQL> select floor(3.1) from dual;FLOOR(3.1)----------- 3SQL> select floor(3) from dual; PODLAŽÍ(3)---------- 3

SQRT – 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 TIMESTAMP

Pří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-19

Konverzní 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 datum

Příklady SQL> vyberte to_char(sysdate ,'DD-MON-YYYY,MI') z dual 2;TO_CHAR(SYSDATE,'DD---------------------01- SEP-2019, 34

Další 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í NULL

DECODE 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í relaci

Malý 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ěď:E

Doufá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ů.


  1. Nastavte počáteční hodnotu pro sloupec s automatickým přírůstkem

  2. Jak efektivně převést text na číslo v Oracle PL/SQL s jiným než výchozím NLS_NUMERIC_CHARACTERS?

  3. Špatné návyky:Počítání řádků obtížným způsobem

  4. Jak zjistím, kdy je můj kontejner mysql ukotvený a mysql připraven k přijímání dotazů?