Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonctions à une seule ligne dans Oracle sql

Cela fait partie du didacticiel Oracle SQL et contient de bons exemples, des explications sur les fonctions à une seule ligne dans Oracle Sql

Les fonctions sont des programmes qui prennent zéro ou plusieurs arguments et renvoient une seule valeur.

Les fonctions peuvent être des fonctions à une ou plusieurs lignes

Nous discuterons ici des fonctions à une seule ligne en SQL

Qu'est-ce que les fonctions à une seule ligne dans Oracle SQL ?

Les fonctions à une seule ligne sont des fonctions intégrées et incluent des fonctions de caractères, numériques, de date, de conversion et définies par l'utilisateur.

Toutes les fonctions à une seule ligne peuvent être utilisées dans des programmes SQL ou PL/SQL et peuvent être utilisées dans les clauses SELECT, WHERE et ORDER BY.

Les fonctions à une seule ligne incluent TO_CHAR, TO_DATE, UPPER, LOWER, etc.

Les fonctions à une seule ligne peuvent également être utilisées dans la clause SET de la commande UPDATE. Les fonctions à une seule ligne ne peuvent pas être utilisées dans une clause HAVING.

Examinons les différentes fonctions importantes sur une seule ligne

Fonctions des personnages dans  SQL

Les fonctions de caractère sont :
LOWER(‘char’)             :convertir la chaîne en minuscules

SQL> sélectionnez le nom de "EMP" ;ENAME----------BlakeClarkScottSQL> sélectionnez lower(ename) de "EMP";LOWER(ENAM----------blakeclarkscott 

UPPER(‘CHAR’)  :convertir la chaîne en majuscule

SQL> select upper(ename) from "EMP";UPPER(ENAM----------BLAKECLARKSCOTT

INITCAP(‘Char’) :renvoie une chaîne avec la première lettre de chaque mot en majuscule

SQL> select initcap(ename) from "EMP";INITCAP(EN----------BlakeClarkScott

CONCAT - La fonction a une limite de deux paramètres.

SQL> select concat(ename,DEPTNO) from 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 :nombre d'arguments invalide

LENGTH :retourne la longueur de la chaîne

SQL> select ename,length(ename) from emp;ENAME LENGTH(ENAME)---------- -------------Blake 5Clark 5Scott 5

LENGTHB :renvoie la longueur d'une chaîne en octets

SQL> select ename,length(ename),lengthb(ename) from emp;ENAME LENGTH(ENAME) LENGTHB(ENAME)---------- ----------- -- --------------Blake 5 5Clark 5 5Scott 5 5

INSTR :renvoie l'index de la chaîne recherchée dans une chaîne,

SQL> select ename,instr(ename,'A') from emp;ENAME INSTR(ENAME,'A')---------- ------------ ----Blake 0Clark 0Scott 0SQL> select ename,instr(ename,'a') from emp;ENAME INSTR(ENAME,'A')---------- -------- --------Blake 3Clark 3Scott 0

LPAD :remplir à gauche une chaîne de n caractères

SQL> select ename,lpad(ename,12) from emp;ENAME LPAD(ENAME,12)---------- ---------------- --------------------Blake BlakeClark ClarkScott ScottSQL> select ename,lpad(ename,12,'-') from emp;ENAME LPAD(ENAME,12,'- ')---------- ------------------------------------Blake - ------BlakeClark -------ClarkScott -------Scott

LTRIM :supprimer les caractères de début d'une chaîne

SQL> select ltrim(' name') from dual;LTRI----nameSQL> select ltrim(' name ') from dual;LTRIM('-------nameSQL> select LTRIM('000123' , '0') de dual;LTR---123SQL> sélectionnez LTRIM('1000123', '0') de dual;LTRIM('-------1000123

REMPLACER :effectuer une recherche et un remplacement de sous-chaîne

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

SUBSTR – renvoie une section de chaîne spécifiée en valeurs numériques
SUBSTRB – identique à SUBSTR uniquement avec des octets
SOUNDEX – renvoie une représentation phonétique d'une chaîne
TRANSLATE – effectue une recherche et un remplacement de caractères
TRIM - caractères de début et de fin de chaîne

Exemples sélectionnez 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;

Comme expliqué, la fonction de ligne unique fonctionne sur chaque ligne

Connexe : Traitement du décodage Oracle SQL

Fonctions numériques en Sql

Les fonctions numériques sont :
ROUND :arrondit un nombre

SQL> sélectionnez round(3.456) de dual;ROUND(3.456)------------ 3SQL> sélectionnez round(3.456,2) de dual;ROUND(3.456,2)--- ----------- 3.46

TRUNC :tronque un nombre
MOD :renvoie le module, c'est-à-dire le reste

SQL> sélectionne mod(4,2) depuis dual ; MOD(4,2)---------- 0SQL> sélectionne mod(4,3) de dual ; MOD(4,3)---------- 1

SIGN :renvoie positif, négatif ou zéro
CEIL – renvoie le nombre immédiatement supérieur

SQL> sélectionnez ceil(3.1) à partir de dual ; CEIL(3.1)---------- 4SQL> sélectionnez ceil(3) à partir de dual ; PLAFOND(3)---------- 3

LOG – renvoie le logarithme
FLOOR – renvoie le nombre inférieur suivant

SQL> select floor(3.1) from dual;FLOOR(3.1)---------- 3SQL> select floor(3) from dual; ÉTAGE(3)---------- 3

SQRT - renvoie la racine carrée d'un nombre

Exemples SELECT SQRT(25) "Racine carrée" FROM DUAL;SELECT order_total, CEIL(order_total) FROM commandes WHERE order_id =58758;

Fonctions de date d'Oracle

Les fonctions de date d'Oracle sont :
SYSDATE :renvoie la date actuelle
DUAL
MONTHS_BETWEEN (renvoie un nombre) :renvoie le nombre de mois entre deux dates
ADD_MONTHS :ajoute un nombre de mois à date
NEXT_DAY :renvoie le jour de la semaine suivant une date donnée
LAST_DAY :renvoie le dernier jour du mois


DBTIMEZONE - renvoie le fuseau horaire de la base de données
TRUNC :tronque une date.
CURRENT_TIMESTAMP - renvoie la date et l'heure au format TIMESTAMP

Exemples SQL> sélectionnez CURRENT_TIMESTAMP à partir du double;CURRENT_TIMESTAMP----------------------------------------- ---------------------------------01-SEP-19 04.33.26.493097 PM +00:00SQL> sélectionnez la date système à partir de double;SYSDATE---------------01-SEP-19

Fonctions de conversion de type explicite

TO_CHAR -convertit le nombre ou la date en VARCHAR2
TO_NUMBER :Convertit le caractère en nombre
TO_DATE :Il convertit en date

Exemples SQL> sélectionnez to_char(sysdate ,'DD-MON-YYYY,MI') from dual 2;TO_CHAR(SYSDATE,'DD---------------------01- SEP-2019,34

Autres fonctions

NVL (expr1, expr2) et NVL3
NVL – prend deux arguments :NVL(x1, x2), renvoie x2 lorsque x1 est NULL ou x1 lorsque x1 n'est pas NULL. NVL2 - prend trois arguments :NVL2(x1, x2, x3), renvoie x3 lorsque x1 est NULL ou x2 lorsque x1 n'est pas NULL

DECODE Cette fonction fonctionne comme une instruction IF-THEN-ELSE ou CASE.
COALESCE – renvoie la première valeur non NULL d'une liste
SYS_CONTEXT – renvoie les attributs système
UID – renvoie l'ID utilisateur numérique pour la session en cours

Petit quiz pour tester les connaissances sur les fonctions à une seule ligne en SQL

Question 1 :vous utilisez des fonctions à une seule ligne dans une instruction select. Quelle fonction peut être classée comme similaire à une instruction if-then-else ?

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

Explication :

La fonction decode( ) agit comme une clause if-then-else dans vos instructions SQL. Le choix sqrt( ) est incorrect car sqrt( ) produit la
racine carrée d'un nombre. Le choix new_time( ) est incorrect car la fonction new_time( ) renvoie une nouvelle heure basée sur les valeurs spécifiées dans l'appel à cette fonction.

Enfin, le choix rowidtochar() est incorrect car rowidtochar() est une fonction qui convertit les informations ROWID en informations CHAR.

Question 2 :

Vous souhaitez utiliser des fonctions à une seule ligne dans vos instructions SQL. Parmi les propositions suivantes, lesquelles sont des fonctions numériques ? (Choisissez trois des quatre.)

A) sinh( )
B) sqrt( )
C) to_number( )
D) round( )
Explication :
La seule fonction non numérique dans ce list est la fonction to_number( ),
qui est une opération de conversion.

Question 3 L'instruction SQL suivante provient d'une session SQL*Plus :
select decode(EMPNO, 74765, 'INACTIVE', 'ACTIVE') empno from DEPT
where substr(ENAME,1,1)> to_number ('V') et EMPNO> 1000
ordre par EMPNO desc, ENAME asc ;

Laquelle des lignes suivantes de l'instruction select affichée dans le
bloc de code précédent contient une erreur ?

A) sélectionnez decode(EMPNO, 58385, 'INACTIVE', 'ACTIVE') empno
B) from EMP
C) and EMPNO> 02000
D) where substr(ENAME,1,1 ) > to_number('S')
E) trier par EMPNO desc, ENAME asc ;

Explication :(D)
Les caractères alphabétiques, tels que S, ne peuvent pas être convertis en nombres. Lorsque cette instruction est exécutée, elle produit une erreur sur cette ligne. Les
autres lignes de cette requête sont correctes telles qu'elles sont composées.

Question 4  Quelle instruction SELECT obtiendra le résultat "elloworld" à partir de la chaîne "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 double ;
Réponse :E

J'espère que vous aimez cet article sur les fonctions à une seule ligne dans SQL. Merci de nous faire part de vos commentaires

Articles connexes
Fonctions analytiques dans oracle :les fonctions analytiques Oracle calculent une valeur agrégée basée sur un groupe de lignes en utilisant la clause over partition by oracle , elles diffèrent des fonctions agrégées
rang dans oracle :RANK, DENSE_RANK et ROW_NUMBER sont analytiques oracle fonction qui sont utilisées pour classer les lignes dans le groupe de lignes appelé fenêtre
Fonction Lead dans Oracle :Découvrez la fonction LAG dans Oracle et la fonction Lead dans Oracle, comment les utiliser dans les requêtes analytiques et comment cela fonctionne dans Oracle sql
Requêtes Top-N dans Oracle :consultez cette page sur l'exploration des différentes façons de réaliser des requêtes Top-N dans Oracle et la pagination dans la base de données oracle de requête oracle.