Contacts

Travail de laboratoire. Travailler avec des fonctions de chaîne. Utilisation de fonctions symboliques, de cordes et fonctions de travail avec la date dans SQL

Dans cette partie, il s'agira de travailler avec des informations textuelles pouvant être utilisées dans les requêtes et le code de programme dans PL / SQL.

Concat (STRL, STR2) fonction

Cette fonction effectue la chaîne concontelle STRL et STR2. Si l'un des arguments est nul, il est perçu comme une chaîne vide. Si les deux arguments sont nuls, la fonction renvoie NULL. Exemple:

Sélectionnez Concat ("Pap \\" était un chien ") x1,
Concactat ", null) x2,
Concat (NULL, "TEST") X3,
Concat (, null) x4
De double.

Le chien avait un chien

Pour la concaténation, Oracle Strings prend en charge un opérateur de concaténation spécial "||", qui fonctionne de la même manière que les fonctions Concat, par exemple:

Sélectionnez Concat ("Pap \\" était un chien ") x1," pop "||" était un chien "x2
De double.

L'opérateur de concentration "||", équivalent à l'appel de la fonction Concat, et l'opérateur "+" utilisé dans les opérations arithmétiques ne doit pas être confondu. À Oracle, ce sont des opérateurs différents, mais au détriment de la clarification automatique des types, des erreurs utilisées sont possibles, par exemple:

Sélectionnez "5" + "3" x1
De double.

Dans ce cas, la valeur numérique de 8 est renvoyée et non la ligne de texte "53". Cela est dû au fait que, en trouvant l'opération arithmétique "+", Oracle tente automatiquement d'apporter les arguments au type de numéro.

Fonction inférieure (STR)

La fonction inférieure convertit tous les caractères de chaîne STR en minuscules. Exemple:

Sélectionnez Basse ("Données texte") x
De double.

Une fonctionSupérieur (str)

La fonction supérieure convertit tous les caractères de chaîne STR en majuscule. Exemple:

Sélectionnez Upper ("Données texte") x
De double.

Fonction initcap (str)

Renvoie la chaîne de STR, dans laquelle les premières lettres de tous les mots sont transformées en capital. La fonction est pratique pour formater le nom complet lors de la création de rapports. Exemple:

Sélectionnez InitCapCivants Petr Sidorovych ") x
De double.

Les fonctionsLtrim (str [, set])etRtrim (str [, set])

La fonction Ltrim supprime tous les caractères du début de la ligne au premier caractère, qui n'est pas dans l'ensemble des caractères de jeu. Par défaut, l'ensemble consiste en un seul espace et peut ne pas être indiqué. La fonction RTRIM est similaire à Ltrim, mais supprime les caractères à partir de la fin de la ligne. Considérez quelques exemples:

Sélectionnez Ltrim ("Données texte") x1,
Ltrim ("_ # données texte", "#_") x2,
Ltrim ("1234567890 Données texte", "1234567890") x3
De double.

Remplacer la fonction (str, Search_str, [, remplacer_str])

La fonction Remplacer effectue la recherche de l'échantillon Search_str dans la chaîne STR et chaque entrée de l'entrée remplace le remplacement_str. Par défaut, le remplacement_str est égal à une chaîne vide, de sorte que l'appel de la fonction de remplacement avec deux arguments conduit à la suppression de toutes les entrées trouvées. Trouver la sous-chaîne est effectuée en ce qui concerne le registre. Exemple:

Sélectionnez Remplacer ("Popa était un chien", "chien", "chat") x1,
Remplacer ("POPA était un chien diabolique", "en colère") x2,
Remplacer ("POPA était un chien", "chien", "chat") x3
De double.

Le chat avait un chat

Le chien avait un chien

Le chien avait un chien

Traduire la fonction (Str, de_mask, To_mask)

La fonction TRADUCTION analyse la chaîne STR et remplace tous les caractères de la rangée de la rangée de FROMA_MASK aux caractères correspondants de TO_MASK. Pour un fonctionnement correct, la fonction de rangée de MASK et TO_MASK doit avoir la même longueur ou la chaîne de Mask doit être plus longue que to_mask. Si de_mask est plus long que to_mask, et dans le traitement de la chaîne de chaîne, les symboles correspondant à l'un des caractères de base_masques sont détectés et ne sont pas conformes à TO_MASK, puis de ces caractères seront supprimés de la chaîne. str. Si vous passez de_mask ou to_mask, égal à NULL, la fonction retourne la valeur de NULL. La comparaison est faite en ce qui concerne le registre.

Sélectionnez Traduire ("Test 12345", "E2 \\" E! ") X1,
Traduire ("Test 12345", "E234", "E") x2
De double.

Cette fonction est pratique pour résoudre un certain nombre de tâches pratiques relatives aux symboles transcodant ou avec une recherche de caractères interdites. Par exemple, il est nécessaire d'analyser le mot de passe et de déterminer s'il contient au moins un chiffre. La mise en œuvre de ce chèque avec Traduire a la forme:

Si Traduire (passwd, "0123456789", "*") \u003d passwd alors
Add_err0r ("Erreur - Le mot de passe doit contenir au moins un chiffre!");
Retour 1;
FIN SI;

Un autre exemple: il y a une préparation du nombre à sa transformation en nombre. Il est nécessaire de remplacer les diviseurs des signes décimaux "et" "." sur le "." Et supprimer des espaces. La mise en œuvre de cette opération avec Traduire a la forme:

Sélectionnez Traduire ("123 455.23", ",", "..") x1,
Traduire ("- 123 455.23", ".,", "..") x2
De double.

Fonction substraire (str, m [, n])

La fonction SubRSTR renvoie un fragment de chaîne string STR, en commençant par un symbole M des symboles n. Vous ne pouvez pas spécifier la longueur - dans ce cas, la ligne du symbole M est renvoyée et jusqu'à la fin de la chaîne STR. La numérotation des caractères provient de 1. Si vous spécifiez M \u003d 0, la copie commencera toujours à partir du premier caractère. La tâche de la valeur négative M conduit au fait que les caractères sont comptés à partir de la fin de la ligne et non du début. Le réglage des valeurs M dépasse la valeur absolue de la longueur de la chaîne conduit au fait que la fonction renvoie NULL.

Sélectionnez Substr ("Popa était un chien", 13) x1,
Substr ("popa était un chien", -6) x2,
Substr ("Texte de test Eto", 5, 8) x3,
Substr ("popa était un chien", 150) x4
De double.

texte

Instr (str, search_str [, n [, m]] fonction)

La fonction INSTR renvoie la position du premier fragment Symbol Symbol M-ro de la chaîne de chaîne de chaîne qui coïncide avec la chaîne Search_STR. La comparaison est effectuée à partir de la chaîne de chaîne de la N-T ème Symbole, par rapport au registre est prise en compte. La valeur par défaut n \u003d m \u003d 1, c'est-à-dire que la recherche est effectuée depuis le début de la ligne et renvoie la position du premier fragment trouvé. En cas de recherche infructueuse, la fonction renvoie 0.

Sélectionnez Instr ("Ya Pop était un chien", "chien") x1,
Instr ("Ya Pop était un chien", "chat") x2,
Instr ("Ceci est un texte pour démontrer la recherche de texte", "Texte", 1, 2) x3,
Instr ('11111000000001 "," 1 ", 7) x4
De double.

Avec cette fonctionnalité, ainsi que de toutes les autres erreurs d'oracle, les erreurs typiques associées au traitement de la valeur NULL sont souvent autorisées. Si STR \u003d NULL, la fonction retournera NULL, et non zéro! Cela doit être pris en compte lors de la construction de diverses conditions. Par exemple, ce fragment du programme PL / SQL ne prend simplement pas en compte cette fonctionnalité:

Si Instr (txt_var,"*") = 0 Puis.
...
Finir.Si;

Dans ce cas, il serait correct d'écrire comme ceci:

Si NVL (INSTR (TXT_VAR, "*"), 0) \u003d 0 alors
...
FIN SI;

Longueur (STR) et longueurb (STR) fonctions

Longueur (STR) renvoie la longueur de chaîne STR en caractères. Pour une chaîne vide et des valeurs nulles, la fonction renvoie NULL, il est donc recommandé d'utiliser NVL à utiliser avec cette fonction.

Sélectionnez la longueur ("Popa était un chien") x1,
Longueur ("") x2,
Longueur (null) x3,
Nvl (longueur (""), 0) x4
De double.

La fonction allongueur est similaire à la fonction de longueur, mais renvoie la longueur de la chaîne en octets.

Fonction ASCII (STR)

Renvoie le code ASCII de la première chaîne de symbole de chaîne dans le cas de l'utilisation du codage ASCII et du premier octet du symbole multibyte lors de l'utilisation de caractères multibytes. Exemple:

Sélectionnez ASCII ("TEST") X1 de Dual

Fonction de chr (n)

Renvoie un symbole dans son code.

Sélectionnez Chr (64) x1
De double.

Pour simplifier le travail avec des lignes, il existe un certain nombre de fonctions intégrées, ce qui facilite grandement les opérations telles que la conversion de chaînes vers d'autres types de données, la recherche de sous-chaîne dans la chaîne, déterminant la longueur de la chaîne, etc. Dans cet article, Nous considérerons les fonctions les plus courantes pour travailler avec des lignes.

1) La fonction de définition de longueur de la chaîne de longueur (chaîne) renvoie le nombre de caractères de la chaîne, y compris les espaces d'extrémité.

Sélectionnez la longueur («chaîne») à partir de Dual renvoie la valeur de 7.

2) Registres de symboles supérieurs Fonctions de conversion (chaîne), inférieure (chaîne), initcap (chaîne). Pour convertir les caractères dans le registre supérieur utilise la fonction supérieure ().

Sélectionnez Upper ('String') à partir de la chaîne de retour.

Si vous avez besoin de convertir des caractères de chaîne en minuscule, la fonction inférieure () est utilisée.

Sélectionnez Basse ('String') à partir de la chaîne de retour.

La fonction initcap convertit chaque premier caractère du mot au registre supérieur et tous les autres caractères au fond à condition que le symbole symbole entre les mots espaces.

Sélectionnez InitCap ('String1 String2') à partir de Dual retournera la chaîne String1 String2.

3) Fonctions de circoncision des espaces ltrim initiaux et finaux (chaîne), RTRIM (String), Trim (String). En conséquence, la première fonction coupe toutes les lacunes de chaîne initiales, la seconde est tout fin et le troisième est tout initial et fin.

Sélectionnez Ltrim ('str1') à partir de Dual retournera la chaîne STR1,
Sélectionnez Rtrim ('str2') de Dual retournera la chaîne STR2,
Sélectionnez Barm ('str3') à partir de Dual retournera la chaîne STR3.

4) La fonction de remplacement de la partie de la ligne d'une autre ligne remplacer (Source_Stroke, remplaçable_stroit, remplacement_stroit). Pour plus de clarté, considérez un exemple, dans certains champs de texte, la table enregistre le numéro. De plus, le symbole du séparateur entre l'ensemble et la partie fractionnée dans certains champs ".", Et pour nous pour un traitement supplémentaire de données, il est nécessaire que cela soit "", "dans tous les domaines. Pour ce faire, utilisez la fonction Remplacer comme suit. Remplacer (champ1, '.' ',', ') Et tous les personnages "." Le champ sera remplacé par le champ "", ".

Sélectionnez Remplacer ('my_string', '_', '@') à partir de Dual retournera la chaîne [Email protégé]

5) Fonctions de conversion de données à d'autres types de données. To_char (numéro) convertit un numéro en texte. To_number convertit le texte au numéro. To_date (chaîne, format_dates) convertit une chaîne à un format spécifique.

Sélectionnez TO_CHAR (123) à partir de Dual retournera la ligne 123,
Sélectionnez TO_Number ('12345') à partir de Dual retournera le numéro 12345,
Sélectionnez TO_Date ('01 .01.2010 ',' dd.mon.yyyyy ') de Dual retournera la date 01.jan.2010.

6) La fonction de détermination de l'entrée de la sous-chaîne dans la chaîne d'instruments (source_stroke, sous-chaîne, numéro SIMAL). La fonction spécifiée vous permet de déterminer le numéro de caractère dans la ligne d'origine à partir duquel la sous-chaîne souhaitée commence (s'il y a telle). Sinon, 0 est renvoyé. Par exemple, nous devons définir toutes les positions dans la table de Table1, au nom de laquelle se trouve la sous-chaîne "Manager". Pour cela, le prochain opérateur convient parfaitement.

Sélectionnez * à partir de table1 où Instr (Post, 'Manager', 1)\u003e 0.

C'est-à-dire que l'instruction SELECT n'ayera afficher que les enregistrements de la table de la table1 dans laquelle le «gestionnaire» de la sous-chaîne souhaité sera trouvé. Et la recherche sera faite à partir du premier symbole. Si la recherche doit être effectuée à une autre position, le numéro de caractère pour démarrer la recherche est indiqué dans le troisième paramètre.

Sélectionnez Instr ('Petite chaîne', 'String', 1) à partir de deux retours à 7,
Sélectionnez Instr ('Petite chaîne', 'String', 1) de Dual retournera la valeur de 0.

7) La fonctionnalité de sélection dans la sous-chaîne de la ligne d'origine (Source_Stroke, le numéro_nachable_simvol, le numéro de_simvol). Envisagez un tel exemple dans la table utilisateur stocke l'adresse sous la forme du nom du règlement, le nom de la rue, le numéro de la maison. De plus, nous savons qu'il y a strictement 20 caractères pour le nom de la colonisation (si le nom du règlement est inférieur à 20 caractères, le reste est rempli d'espaces), pour le nom de la rue 30 caractères, pour le numéro de la maison. 3 symbole. Ensuite, nous devons transférer toutes les adresses de notre tableau à une autre et à la fois toutes les 3 adresses doivent être dans différents domaines. Pour mettre en surbrillance le composant d'adresse, appliquez la fonction substrative ().

Sélectionnez Substr (Table_1.Address, 1, 20) Ville, Substr (Table_1.Address, 21, 30) Street, Substr (Table_1.Address, 52, 3) ville de Table_1

Bien entendu, il est nécessaire d'utiliser l'opérateur d'insertion pour transférer les données, mais pour la compréhension des travaux de la fonction STI, l'exemple considéré est parfaitement approprié.
Selectr ('my_string', 4, 3) de Dual retournera la chaîne STR.

Les fonctions décrites ci-dessus peuvent être utilisées dans les paramètres d'entrée. Donc, si nous devons mettre en évidence tous les caractères, après avoir défini, la fonction SST peut passer le numéro du symbole souhaité à partir de la fonction Instr. Par exemple, si vous devez transférer tous les caractères du champ de table, qui sont disposés après "", vous pouvez utiliser un tel design
Sélectionnez Substr (my_string, Instr (my_string, ',', 1), longueur (my_string) - Instr (my_string, ',', 1) +1) de Dual.
Pour déterminer le symbole initial, nous appelons la fonction Instr (), qui retournera le numéro du symbole de la première entrée de la sous-chaîne "". Ensuite, nous déterminons le nombre de caractères jusqu'à la fin de la ligne comme différence entre la longueur de la chaîne et le numéro de la première sous-chaîne d'entrée.

8) Pour déterminer le code de symbole, la fonction ASCII (String) est utilisée, qui renvoie le code 1 du symbole de la chaîne. par example

Select ASCII (W) de Dual renvoie la valeur de 87.

9) Fonction inversée pour convertir un code de symbole dans le symbole de la CHR (numéro).

Sélectionnez Chr (87) à partir de Dual retournera le symbole W.

Fonctions pour travailler avec des chiffres à Oracle.

Le SGBD d'Oracle a un certain nombre de fonctions pour travailler avec des chiffres. Ceux-ci incluent les taux du nombre de puissance (), de l'arrondi rond (), etc.

1) La fonction ABS renvoie la valeur absolue de l'argument.
Sélectionnez ABS (-3) à partir de Dual renvoie la valeur de 3.

2) La fonction CEIL (numéro) renvoie le plus petit entier, supérieur ou égal au paramètre transmis.
Sélectionnez le plafond (4.5) de Dual Va Valeur 5.

3) La fonction de plancher (nombre) renvoie le plus grand nombre d'entiers, plus petits ou égaux au paramètre transmis.
Sélectionner le plancher (3.8) à partir de Dual retournera la valeur de 3.

4) La fonction MOD (Number_1, Number_2) renvoie le reste de la division du premier paramètre à la seconde.
Sélectionnez MOD (5, 3) à partir de Dual renvoie la valeur 2. Remarque. Si le deuxième paramètre est 0, la fonction renvoie le premier paramètre.

5) Fonction d'arrondi ronde (numéro_1, numéro_2). Arrondit le premier paramètre transmis au nombre de décharges transmis dans le deuxième paramètre. Si le deuxième paramètre n'est pas spécifié, il est reçu égal à 0, c'est-à-dire que l'arrondi est effectué sur toute la valeur. Exemples
Sélectionner la ronde (101.34) à partir de Dual Valend la valeur 101,
Sélectionnez la ronde (100.1268, 2) de Dual reviendra 100,13
Sélectionnez la ronde (1234000.3254, -2) de Dual reviendra à 1234000,
Sélectionner le tour (-100.122, 2) à partir de Dual retournera la valeur -100.12.

6) Trunc Valeur pantalon (Number_1, Number_2). Renvoie la valeur tronquée du premier paramètre au nombre de décimales décimales spécifiées dans le deuxième paramètre. Exemples
Sélectionnez Trunc (150.58) à partir de Dual retournera la valeur de 150
Sélectionnez Trunc (235.4587, 2) de Dual reviendra à 235.45
Sélectionnez Trunc (101.23, -1) à partir de la valeur de retour double 100

7) Le SGBD d'Oracle a un certain nombre de fonctions trigonométriques sin (numéro), cos (numéro), bronzage (nombre) et acos inverse (nombre), asin (numéro), acos (nombre). Ils renvoient la valeur au nom correspondant de la fonction trigonométrique. Pour les fonctions directes, le paramètre est la valeur de l'angle dans les radians et pour l'inverse - la valeur de la fonction. Exemples
Sélectionnez COS (0.5) à partir de Dual retournera la valeur de 0.877582561890373
Sélectionnez Sin (0.5) de Dual retournera la valeur de 0.479425538604203
Sélectionnez Tan (0.5) de Dual Retour la valeur de 0.546302489843791
Sélectionnez ACOS (0.5) de Dual retournera la valeur 1.0471975511966
Sélectionnez Asin (0.5) de Dual Retournera 0.523598775598299
Sélectionnez Atan (0.5) de Dual Retour la valeur de 0.463647609000806

8) Fonctions hyperboliques. Sinh (numéro),
Cosh (numéro), TANH (numéro). SINH () renvoie le paramètre hyperbolique transmis sine, COSH () renvoie le cosinus hyperbolique du paramètre transmis, TANH () renvoie la tangente hyperbolique du paramètre transmis. Exemples
Sélectionnez Cosh (0.5) à partir de Dual retournera la valeur 1.12762596520638
Sélectionnez SinH (0.5) à partir de Dual retournera la valeur de 0.521095305493747 Sélectionnez TANH (0.5) à partir de Dual Retour La valeur de 0.46211715726001

9) Alimentation de la fonction anglaise (Number_1, Number_2). Exemples
Sélectionnez la puissance (10, 2) de la valeur de retour double 100
Sélectionner la puissance (100, -2) de Dual reviendra 0,0001

10) Fonctions logarithmiques. LN (numéro) renvoie le logarithme naturel du paramètre transmis, le journal (Number_1, Number_2) renvoie le logarithme du deuxième paramètre transmis en fonction de la base transmise par le premier paramètre. De plus, le premier paramètre doit être supérieur à zéro et n'est pas égal à 1. Exemples
Sélectionnez LN (5) à partir de Dual retournera la valeur 1.6094379124341
Sélectionner le journal (10, 3) à partir de Dual renvoie la valeur de 0.477121254719662

11) Fonction d'extraction racine carrée SQRT (nombre). Exemple
Sélectionnez SQRT (4) à partir de Dual renvoie la valeur de 2.

12) fonction d'exp (numéro) exp (numéro). Exemple
Select exp (2) de Dual reviendra au 7.38905609893065.

Caractéristiques pour travailler avec des dates à Oracle

En pratique, il est souvent nécessaire d'analyser des données sous forme de dates, de produire certaines opérations sur eux, modifiez le format. Toutes ces opérations sont déjà implémentées sous la forme de fonctions intégrées. Considérons les plus élémentaires.

1) Add_Months renvoie la date qui est séparée de la date transmise dans le premier paramètre au nombre de mois spécifiés dans le deuxième paramètre. Exemples
Sélectionnez Add_Months ('01 -Jan-2010 ', 2) de Dual retournera la date '01 .03.2010'
Sélectionnez Add_Months ('01 -Jan-2010 ', -3) à partir de Dual Retour La date '01 .10.2009'
Sélectionnez Add_Months ('30 -Jan-2010 ', 1) de Dual retournera la date '28 .02.2010'

2) Pour déterminer la date et l'heure actuelles, la fonction Sysdate s'applique. La portée de cette fonction est beaucoup plus large qu'elle ne peut sembler à première vue. Tout d'abord, il contrôle la saisie des données dans la base de données. Dans de nombreuses tables, des champs distincts sont alloués pour enregistrer la date du dernier changement. Il est également très pratique de contrôler certains paramètres d'entrée pour les rapports, surtout s'ils ne devraient pas être plus que la date actuelle. En plus de la date, cette fonctionnalité retourne plus de temps jusqu'à quelques secondes. Exemple
Sélectionnez Sysdate de Dual Retty Date '22 .05.2010 14:51:20 '

3) Si vous avez besoin de définir le dernier jour du mois, la fonction Last_Day (date) convient parfaitement à cela. Il peut être utilisé pour déterminer le nombre de jours restants dans le mois.
Sélectionnez Last_Day (Sysdate) - Sysdate de Dual.
À la suite de l'exécution de cet opérateur, le nombre de jours à compter de la date actuelle avant la fin du mois sera affiché. Exemple
Sélectionnez Last_Day ('15 -Feb-2010 ') de Dual retournera la date '28 .02.2010'.

4) Fonction pour déterminer le nombre de mois entre les dates de mois_between (date_1, date_2). Exemples
Sélectionnez des mois_between ('01 -JUL-2009 ', '01 -JAN-2010') à partir de la valeur de retour double -6
Sélectionnez des mois_between ('01 -JUL-2009 ', '10 -Jan 2010') de Dual retournera la valeur -6.29032258064516.
Noter. Si les jours des mois coïncident, la fonction renvoie un entier, sinon le résultat sera fractionnel et que le nombre de jours dans le mois sera pris 31.

5) La fonction NEXT_DAY (date, jour_deli) vous permet de déterminer la date suivante à partir de la date transmise dans le premier paramètre, qui correspond au jour de la semaine transmise dans le deuxième paramètre. Exemple
Sélectionnez Next_day ('01 -Jul-2009 ',' Lun ') à partir de Dual reviendra la date '06.07.2009', c'est-à-dire le lundi suivant après le 1er juillet 2009.

6) Arrondir la date de la ronde (date, format). Le deuxième paramètre n'est pas requis s'il ne spécifie pas, il est alors pris pour "DD", c'est-à-dire que l'arrondi sera produit jusqu'au proche avenir. Exemples
Sélectionner la ronde (sysdate) à partir de Dual retournera la date '23 .05.2010 '
Sélectionnez la ronde (sysdate, mois) de Dual retournera la date '01 .06.2010 ', arrondi au jour le plus proche du mois.

7) troncature de la date. Fonction Trunc (date, format). De plus, comme indiqué ci-dessus peut ne pas avoir le deuxième paramètre. Dans ce cas, la troncature sera faite jusqu'au proche avenir. Exemples
Sélectionnez Trunc (sysdate) à partir de Dual retournera la date '22 .05.2010 '
Sélectionnez Trunc (sysdate, 'ww') à partir de Dual retournera la date '01.05.2010 '
Sélectionnez Trunc (sysdate, 'jour') de Dual retournera la date '16 .05.2010 '.

Fonctions de conversion de données dans Oracle

Cette section est consacrée à la prise en compte de la transformation des données en divers formats. En pratique, la situation est assez courante lorsqu'il est nécessaire d'envisager des valeurs de chaîne comme des chiffres et inversement. Malgré le petit nombre de fonctions de leurs capacités, il suffit de résoudre des tâches appliquées très complexes.

1) to_char (données, format). À première vue, la syntaxe est assez simple, mais en raison du deuxième paramètre, vous pouvez décrire très précisément dans quel format pour convertir des données. Donc, dans la chaîne, vous pouvez convertir la date et la valeur numérique. Considérez la possibilité de convertir la date à la chaîne. Les valeurs des formats les plus courants sont indiquées dans le tableau, plus d'informations complètes figurent dans la documentation technique.

Tableau des valeurs de format pour la conversion d'un numéro en une chaîne.

Sélectionnez TO_CHAR (sysdate, 'D-mois-YY') de Dual retournera la chaîne '7-Mai -10'
Sélectionnez TO_CHAR (Sysdate, 'DDD-MM-AAAAYY') de Dual retournera la ligne '142-05-2010'
Sélectionnez TO_CHAR (Sysdate, 'Q-D-MM-YYY') à partir de Dual retournera la ligne '2-7-05-010'
Sélectionnez TO_CHAR (1050, '9.99EEEEE) de Dual retournera la ligne' 1.050E + 03 '
Sélectionnez TO_CHAR (1400, '9999V999') de Dual retournera la ligne '1400000'
Sélectionnez TO_CHAR (48, 'RM') de Dual retournera la ligne 'XLVIII'

2) Fonction de conversion de ligne sur TO_Date (chaîne, format). Les formats possibles sont déjà considérés ci-dessus, je vais donc donner quelques exemples d'utilisation de cette fonction. Exemples
Sélectionnez TO_Date ('0101.2010', 'dd.mm.yyyyy') à partir de Dual retournera la date '01.01.2010 '
Sélectionnez TO_Date ('01 .jan.2010 ',' dd.mon.yyyyy ') de Dual Retour La date '01.01.2009'
Sélectionnez TO_Date ('15 -01-10 ',' DD-MM-YY ') à partir de Dual Retour La date '15 .01.2010'.

3) Fonction de conversion de ligne sur la valeur numérique To_Number (chaîne, format). Les formats les plus courants sont répertoriés dans le tableau, alors envisagez l'utilisation de cette fonction sur les exemples. Exemples
Sélectionnez TO_Number ('100') à partir de Dual retournera le numéro 100
Sélectionnez TO_NIGH ('0010.01', '9999D99') à partir de Dual Retour Numéro 10.01
Sélectionnez TO_NIGH ("500 000", "999G999") de Dual retournera le nombre 500000.

introduction

oracle Register String Arithmétique

Les principales idées des technologies de l'information modernes reposent sur les concepts que les données doivent être organisées dans des bases de données pour afficher de manière adéquate le changement de monde réel et répondre aux besoins de l'information des utilisateurs.

Pertinence:L'ordinateur n'est rien de plus que le dispositif de conversion d'informations. Si les informations ne sont pas beaucoup, l'heure principale lors du traitement de l'utilisateur occupe l'algorithme de transformation lui-même. Si dans le même temps, il est nécessaire de travailler avec de grandes quantités de données - l'efficacité de traitement commence à dépendre directement de l'efficacité de l'obtention de données, de les filtrer, etc. afin de simplifier le processus de développement, améliorer les performances de ces systèmes, divers SGMS ont été créés. Ils ont leur propre format de stockage de données, leurs algorithmes pour leur recherche et leur extrait, mais le langage de requête de base de la plupart d'entre eux en est un. Et cette langue est SQL.

Objectifs:

1. Obtenir des connaissances théoriques et pratiques selon les fonctions Oracle SQL;

2. Application de la théorie dans la pratique.

Tâches: Ce cours est consacré à l'étude des fonctions Oracle SQL, ainsi que des techniques principales pour travailler avec eux. Dans cet article, nous étudierons les fonctions qui fonctionnent avec des paramètres d'entrée simples simples de retour pour chaque ligne.

Fonctions ORACLE SQL

La fonction est similaire à celle de l'opérateur dans le fait qu'il manipule des éléments de données et renvoie le résultat. Les fonctions diffèrent des opérateurs du format dans lequel elles sont spécifiées avec leurs arguments. Ce format permet aux fonctions de fonctionner sur zéro, un, deux ou plusieurs arguments d'arguments:

fonction (argument, argument, ...)

Les fonctions peuvent être utilisées pour effectuer des calculs avec des données, une conversion de types de données, des modifications des formats de sortie, etc. Les fonctions SQL sont deux types principaux:

1. fonctions simples (ou scalaires);

2. Fonctions de groupe (ou d'agrégat).

Ces fonctions diffèrent dans le nombre de lignes sur lesquelles elles fonctionnent. Une fonction à une seule ligne renvoie la seule valeur pour chaque ligne de table, tandis que la fonction de groupe renvoie la seule valeur pour tout un groupe de lignes.

Fonctions simples . Les fonctions à une seule ligne peuvent apparaître dans Sélectionner, où et commander par sélection de commandes. En tant qu'argument, ils peuvent prendre des constantes spécifiées par l'utilisateur, les valeurs des variables, les noms de la colonne de la table de base de données ou de l'expression, composé à l'aide des opérateurs et des fonctions.

Liste des fonctions

Toutes les fonctions à une seule ligne sont généralement divisées en plusieurs groupes par type de ces arguments et valeurs renvoyées. Allouer:

· Fonctions numériques;

· Fonctions symboliques;

· Caractéristiques pour travailler avec des dates;

· Fonctions de conversion.

Fonctions symboliques

Les fonctions symboliques sont utilisées sur des valeurs de chaîne. Pour simplifier le travail avec des lignes, il existe un certain nombre de fonctionnalités intégrées, ce qui facilite grandement diverses opérations.

Fonctions de conversion de registre de symboles

La fonction de définition de longueur de la chaîne de longueur (chaîne) renvoie le nombre de caractères de la chaîne, y compris les espaces d'extrémité.

SÉLECTIONNER Longueur ( chaîne) De. Double. Valeur de retour 7.

Fonctions pour convertir les paramètres des caractères supérieurs (chaîne), inférieure (chaîne), initcap (chaîne). Pour convertir les caractères dans le registre supérieur utilise la fonction supérieure ().

SÉLECTIONNER Plus haut ( chaîne) De. Double.ropsp Chaîne.

Si vous avez besoin de convertir des caractères de chaîne en minuscule, la fonction inférieure () est utilisée.

SÉLECTIONNER Plus bas ( Chaîne) De. Double. Ropsp Chaîne.

La fonction initcap convertit chaque premier caractère du mot au registre supérieur et tous les autres caractères au fond à condition que le symbole symbole entre les mots espaces.

SÉLECTIONNER Initcap (string1 string2) De double. Renvoyer la ligne String1 String2..

Fonctions de circoncision des espaces ltrim initiaux et finaux (chaîne), RTRIM (String), Trim (String). En conséquence, la première fonction coupe toutes les lacunes de chaîne initiales, la seconde est tout fin et le troisième est tout initial et fin.

SÉLECTIONNER Ltrim (`str1") de Dual retournera la chaîne STR1,

SÉLECTIONNER Rtrim (`str2") de Dual retournera la chaîne str2,

SÉLECTIONNER Trim (`str3») de Dual retournera la chaîne Strcon.

La fonction de remplacement de la partie ligne d'une autre ligne remplacez (chaîne source, remplacée par une sous-chaîne de remplacement de la sous-chaîne). Pour plus de clarté, considérez un exemple:

Dans certains champs de texte, la table stocke le numéro et le symbole du séparateur entre l'ensemble et la partie fractionnée dans certains champs ".", Et nous pour un traitement de données supplémentaire, il est nécessaire pour cela dans tous les domaines "".

Pour ce faire, utilisez la fonction Remplacer comme suit: Remplacez (champ1, "." "," ") Et tous les caractères". " Le champ sera remplacé par le champ "", ".

SÉLECTIONNER Remplacer (`my_string", "_", "@") de Dual retournera la chaîne [Email protégé]

Fonctions de conversion de données à d'autres types de données: TO_CHAR (numéro) convertit un numéro au texte, TO_Number (String) convertit le texte au numéro, TO_Date (ligne, format de date) convertit une chaîne à un format spécifique.

SÉLECTIONNER To_char (123) de Dual retournera la chaîne 123,

SÉLECTIONNER To_number (`12345") de Dual retournera le numéro 12345,

La fonction de déterminer l'entrée de la sous-chaîne de la chaîne d'instruments (chaîne source, sous-chaîne, numéro de caractère). Cette fonctionnalité vous permet de définir le numéro de caractère dans la ligne d'origine à partir duquel la sous-chaîne souhaitée commence (s'il y a telle). Sinon, 0, par exemple, nous devons définir toutes les positions dans la table de Table1, dans le nom duquel est la sous-chaîne "Manager". Pour cela, l'opérateur suivant convient parfaitement:

SÉLECTIONNER*De.Tableau 1 Où.Instr (poste, `Manager, 1)\u003e 0.

Autrement dit, l'instruction SELECT n'ayera afficher que les enregistrements de la table de la table1, dans lequel le «gestionnaire» de la sous-chaîne souhaité sera trouvé. Et la recherche sera faite à partir du premier symbole. Si la recherche doit être effectuée à une autre position, le numéro de caractère pour démarrer la recherche est indiqué dans le troisième paramètre.

SÉLECTIONNER Instr (`petite chaîne,` string, 1) de Dual retournera la valeur de 7,

SÉLECTIONNER Instr (`petite chaîne,` string, 1) de Dual retournera la valeur de 0.

La fonction de sélection dans la sous-chaîne de la ligne d'origine (chaîne source, le numéro de caractère initial, le nombre de caractères). Envisagez un tel exemple dans la table utilisateur stocke l'adresse sous la forme du nom du règlement, le nom de la rue, le numéro de la maison. De plus, nous savons qu'il y a strictement 20 caractères pour le nom de la colonie (si au nom de la colonie de moins de 20 caractères, le reste est rempli d'espaces), pour le nom de la rue 30 caractères, pour le numéro de la maison. 3 symbole. Ensuite, nous devons transférer toutes les adresses de notre tableau à une autre, tandis que les 3 adresses doivent être dans différents domaines. Pour mettre en surbrillance le composant d'adresse, appliquez la fonction substrative ().

SÉLECTIONNERSubstr (Table_1.Address, 1.20) Ville, Substr (Table_1.Address, 21,30) Street, Substr (Table_1.Address, 52, 3) Ville De. Tableau 1;

Bien entendu, il est nécessaire d'utiliser l'opérateur d'insertion pour transférer les données, mais l'exemple considéré convient parfaitement à la compréhension du fonctionnement de la fonction la STI.

SÉLECTIONNER Substr (`my_string, 4, 3) de Dual retournera la chaîne STR.

Les fonctions décrites ci-dessus peuvent être utilisées dans les paramètres d'entrée. Donc, si nous devons mettre en évidence tous les caractères, après avoir défini, la fonction SST peut passer le numéro du symbole souhaité à partir de la fonction Instr. Par exemple, si vous devez transférer tous les caractères du champ de table, qui sont organisés après "", vous pouvez utiliser un tel design:

SÉLECTIONNER Substr (my_string, instrtr (my_string, `,", 1), longueur (my_string) - Instr (my_string, `,", 1) +1) de Dual.

Pour déterminer le symbole initial, nous appelons la fonction Instr (), qui retournera le numéro du symbole de la première entrée de la sous-chaîne "". Ensuite, nous déterminons le nombre de caractères jusqu'à la fin de la ligne comme différence entre la longueur de la chaîne et le numéro de la première sous-chaîne d'entrée.

Pour déterminer le code de symbole, la fonction ASCII (String) est utilisée, qui renvoie le code 1 du symbole de chaîne. Par example:

SÉLECTIONNER ASCII (W) de Dual retournera la valeur de 87.

La fonction arrière de la conversion de code de symbole sur le symbole de CHR.

SÉLECTIONNERCHR (87) de Dual retournera le symbole W.

Fonctions de manipulation de chaîne symbolique

Oracle propose un ensemble complet de fonctions permettant de manipuler des données de chaîne:

CHR (n) - retourne le symbole du code ASCII pour la décimale n;

ASCII (s) - renvoie le code ASCII décimal du symbole de première ligne;

Instr (S2. S1.POS [, N] - renvoie la position de la chaîne S1 dans une chaîne S2 supérieure ou égale à pos. N - Le nombre d'occurrences;

Longueur (s) - retourne la longueur de la ligne;

Inférieur (s) - remplace tous les caractères de chaîne sur les caractères de capital;

Initcap (s) - définit le premier symbole de chaque mot dans la chaîne sur le titre et les symboles restants de chaque mot - sur le capital;

Substr (S, POS, [, LEN]) - met en évidence la ligne longue LEN dans la chaîne S, à partir de la position POS;

Haut (s) - convertit des lettres majuscules dans la rangée en lettres majuscules;

LPAD (S, N [, A]) - Retourne la chaîne S, complétée sur les symboles de gauche A au nombre de caractères N. Le symbole par défaut est un espace;

RPAD (S, N [, A]) - Retourne une chaîne S, complétée sur les symboles de droite A au nombre de caractères N. Symbole - L'espace de remplissage par défaut;

Ltrim (s,) - retourne la ligne de gauche tronquée S. Les symboles sont supprimés jusqu'à ce que le symbole retiré soit inclus dans la chaîne - Modèle S1 (espace par défaut);

RTRIM (S,) - Retourne une ligne tronquée de symboles S. de S. est supprimée jusqu'à ce que le symbole retiré soit inclus dans la chaîne - le modèle S1 (espace par défaut);

Traduire (S, S1, S2) - Renvoie la chaîne S, dans laquelle toute la saisie de la chaîne S1 est substituée par une chaîne S2. Si S1<> S2, puis symboles qu'aucune conformité n'est exclue de la chaîne résultante;

Remplacer (S, S1, [, S2]) - Renvoie la chaîne S, pour laquelle toute la saisie de la chaîne S1 est substituée sur la substitution S2. Si S2 n'est pas spécifié, tout ce qui entre dans la sous-chaîne S1 est supprimé de la chaîne résultante;

NVL (x, y) - si X est , puis retourne à Y ou à une chaîne ou à un numéro ou à une date en fonction du type de source Y;

Soundex (s) - renvoie la représentation phonétique de la ligne;

Travail de laboratoire. Travailler avec des fonctions de cordes

Fonctions de chaîne dans les requêtes Oracle SQL, Upper (), Concat (), Substr ().

La tâche:

Vous devez créer un identifiant pour chaque employé qui devrait ressembler à 3 symboles de nom de premier personnage deux symboles de premier nom de famille. Tous les caractères de cet identifiant doivent être présentés dans les majuscules.

Écrivez une demande qui reviendrait des informations de la table HR.employées sur le nom et le nom de famille de l'employé, ainsi qu'un identifiant d'employé en conformité avec les conditions définies. Le résultat de la requête doit être tel que présenté à la Fig. 3.1-1.

Décision:

Le code de la demande correspondante peut être:

SÉLECTIONNER Le nom_ne_nom comme "nom", last_name comme "nom de famille", supérieure (Concat (substr (First_Name, 1, 3), substr (last_name, 1,2))) comme "Identifiant" De. Hr.employés.

Une fonction symbolique reçoit une ou plusieurs valeurs de caractère en tant que paramètre et renvoie le caractère et la valeur numérique. Si la fonction de caractère renvoie une valeur de caractère, elle a toujours le type Varchar2 (longueur variable) - à l'exception des fonctions supérieure et inférieure. Ces fonctions convertissent une ligne prédéterminée en un registre supérieur ou inférieur, respectivement et renvoient la valeur de la longueur fixe du type de caractères, si la ligne transmise dans les arguments avait un type de char.

BREF Résumé des fonctions de chaîne

Comme mentionné précédemment, PL / SQL fournit une large gamme de fonctions de chaîne puissantes et de haut niveau au programmeur pour obtenir des informations sur les lignes et la modification de leur contenu. La liste suivante donne une idée de leurs capacités et de leurs syntaxes. Pour plus d'informations sur des fonctions spécifiques, reportez-vous au répertoire de référence Oracle SQL.

  • ASCII (symbole) renvoie le code numérique (numéro) du symbole spécifié dans la base de données.
  • Ascitr (ligne1) obtient une chaîne dans n'importe quel jeu de caractères et la convertit en chaîne de symboles ASCII. Tous les caractères manquants dans le codage ASCII sont présentés sous la forme \\ xxxx, où XXXX est un code de symbole dans Unicode.

Pour plus d'informations sur Unicode et les codes de caractères, veuillez contacter le site http://unicode.org.

  • CHR (code)
    Retourne le symbole de type Varchar2 (longueur 1) correspondant au code spécifié. La fonction est inverse par rapport à la fonction ASCII. Elle a une variété, pratique lorsque vous travaillez avec des données dans des ensembles de symboles nationaux:
CHR (en utilisant le code NCHAR_CS)

Retourne un symbole du type NVARCHAR2 de l'ensemble national de caractères.

  • Composer (ligne1)
    Obtient une chaîne de symboles au format Unicode et le renvoie sous forme normale. Par exemple, une représentation anormalisée "A \\ 0303" définit le symbole "A" avec la Tilda à l'étage (c'est-à-dire a). Appelez la composition ("A \\ 0303") renvoie la valeur "\\ 00E3" - Symbole hexadécimal A à Unicode.

Dans Oracle9i version 1, la fonction de composition ne peut être appelée que de commandes SQL; Dans les programmes PL / SQL, il n'a pas pu être utilisé. À partir de la version Oracle9i2, la fonction de composition peut également être utilisée dans les expressions PL / SQL.

  • Concat (string1, line2)
    Rejoint la chaîne2 à la fin de la ligne1. Un résultat similaire peut être obtenu en utilisant l'expression ligne1 || String2. Opérateur || Beaucoup plus pratique, la fonction Concat est donc relativement rare.
  • Convertir (ligne1, set_simvols)
    Convertit une chaîne d'un symbole de base de données défini en un jeu de caractères spécifié. Lorsque vous appelez, vous pouvez également définir le jeu source de caractères:

Convertir (string1, end_naboting, source_nab)

  • Décomposer (ligne1)
    Obtient une chaîne dans Unicode et renvoie une chaîne dans laquelle tous les caractères composites sont décomposés sur les éléments. La fonction est inverse par rapport à la composition. Par exemple, l'appel décompose renvoie la chaîne "A ~" (voir composition).

Il existe deux variétés de cette fonctionnalité:

  • Décomposer (string1 canonique)
    Effectue la décomposition canonique; Le résultat obtenu peut être restauré en appelant composer. Utilisé par défaut.
  • Décomposer (ligne1)
    La décomposition est effectuée dans le mode de compatibilité. La composition de récupération d'appel peut être impossible.

La fonction décompose, comme la composition, ne peut pas être directement appelée dans les expressions PL / SQL dans la version ORACLE9I 1; Il faut appeler à partir d'instructions SQL. En commençant par Oracle9i version 2, cette restriction a été supprimée.

  • Plus grand (string1, ligne2, ...)
    Obtient une ou plusieurs lignes et renvoie une chaîne qui serait la dernière (c'est-à-dire le plus grand) lors du tri des rangées d'entrée croissantes. Aussi, voir la description de la moindre fonction inverse au plus grand.
  • Initcap (ligne1)
    Modifie le registre des symboles de l'argument de la chaîne, traduisant la première lettre de chaque mot de la ligne en majuscule et les lettres restantes dans le bas. Un mot est considéré comme une séquence de caractères séparés des symboles restants par un espace ou un symbole qui n'est pas alphanumérique (par exemple, # ou _). Par exemple, l'appel InitCap ("Ceci est inférieur") donne le résultat "Ceci est inférieur".
  • Instr (string1, ligne2)
    Retourne la position avec laquelle la ligne2 est incluse dans la chaîne1; Si l'entrée n'est pas détectée, la fonction renvoie 0.

Il existe plusieurs variétés de cette fonctionnalité:

  • Instr (Line11, Line2, Initial_Position)
    La recherche de String2 dans la chaîne1 commence à partir de la position spécifiée par le dernier paramètre. Par défaut, la recherche commence à partir de la position 1, de sorte que l'appel (string1, string2, 1) équivaut à un appel d'instruments (string1, chaîne2).
  • Instr (string1, line22, négatif_nachable_position)
    Le décalage de la position initiale n'est défini pas depuis le début, mais à partir de la ligne d'extrémité1.
  • Instr (string1, line22, initiale_position, n)
    Trouve l'entrée N-E de la chaîne2, en commençant par une position initiale donnée.
  • Instr (string1, line22, négatif_nachable_position, n)
    Trouve l'entrée N-E de la ligne2, à partir de la position initiale spécifiée de la fin de la ligne1.

La fonction d'intrigue considère la chaîne en tant que séquence de caractères. Ses variétés d'Instrb, INSTR2 et INST4 considèrent la chaîne en tant que séquence d'octets, unités de codes (unités de codes) ou index de code (points de code) de Unicode, respectivement. Une variété d'INSTC considère la chaîne en tant que séquence de symboles complets d'UNICODE. Par exemple, la chaîne "A \\ 0303", qui est un "\\ 00e3" décomposé, ou a, est considérée comme un caractère. Au contraire, la fonction d'intrigue considère "A \\ 0303" en tant que séquence de deux caractères.

  • Moins (string1, ligne2, ...)
    Obtient une ou plusieurs lignes et retourne une chaîne qui serait la première (c'est-à-dire la plus petite) lors du tri des lignes d'entrée ascendantes. Voir aussi la description de la plus grande fonction inverse au moins.
  • Longueur (ligne1)
    Renvoie le nombre de caractères de la chaîne. Les variétés de longueur, longueur2 et de longueur4 renvoient le nombre d'octets, unités de codes ou indices de code (points de code) de Unicode, respectivement. La variété de Longueur renvoie le nombre de symboles complets Unicode normalisés dans la mesure du possible (c'est-à-dire avec la conversion "A \\ 0303" dans "\\ 00E3").

La fonction de longueur ne retourne généralement pas zéro. Rappelez-vous que Oracle considère une chaîne vide (") comme , l'appel de la longueur (" ") est en réalité équivalente à une tentative d'obtention de la longueur null; Son résultat sera également égal à NULL. La seule exception est trouvée lors de l'application de la longueur sur le type de clob. Le type de clob peut contenir 0 octets et en même temps être différent de NULL. Dans ce cas unique, la longueur retourne 0.

  • Inférieur (string1)
    Convertit toutes les lettres de la ligne spécifiée en minuscule. La fonction est inverse à la tige. Le type de valeur de retour correspond au type de données d'entrée (char, varchar2, clob). Aussi, voir nls_lower.
  • LPAD (ligne1, final_dlin)
    Renvoie la valeur de la chaîne1, complétée sur les espaces de gauche à la finale_dlin. La fonction a la variété suivante:
  • LPAD (ligne1, final_dlin, agrégat)
    Rejoint une quantité suffisante d'entrées complètes ou partielles afin que la longueur totale de la chaîne a atteint la finale_dlin résultante. Par exemple, un Call LPAD ("Joyeux Noël!", 25, "Ho!") Renvoyer le résultat "Ho! Ho! Hogerry Noël!".
  • ? Ltrim (ligne1)
    Supprime les espaces de la ligne de bord gauche1. Voir aussi des descriptions de fonctions de trim (standard ISO) et RTRIM. La fonction a la variété suivante:
  • Ltrim (ligne1, amovible_nab
    Supprime tous les caractères inclus dans la chaîne Nom_définie, à partir du bord gauche de la ligne1.
  • NCHR (code)
    Retourne le symbole de type NVARCHAR2 (longueur 1) correspondant au code spécifié. La fonction de CHR avec la condition utilisant NCHAR_CS implémente la même fonctionnalité que NCHR.
  • Nls_initcap (string1)
    Renvoie la version de la chaîne1, qui doit se référer au type NVARCHAR2 ou NCHAR, dans laquelle la première lettre de chaque mot est traduite dans les majuscules et les lettres restantes dans le bas. La fonction renvoie la valeur du type Varchar2. "Word" est considéré comme une séquence de caractères séparés des symboles restants par un espace ou un symbole qui n'est pas alphanumérique.

Vous pouvez définir l'ordre de tri affectant la définition de la "première lettre":

  • Nls_initcap (string1, "nls_sort \u003d règle_s.sortion")
    Dans ce formulaire de syntaxe, la règle relative est l'un des noms admissibles des règles de tri énumérées dans le manuel d'assistance à la gestion de la base de données Oracle, l'annexe A, la section "Tremples linguistiques".

L'exemple suivant montre que la fonction initcap est différente de NLS_INITCAP:

Commencer dbms_output.put_line (initcap ("ijzer")); Dbms_output.put_line (nls_initcap ("ijzer", "nls_sort \u003d xdutch")); Finir; Résultat: ijzer ijzer

Dans la langue néerlandaise, la séquence de caractères "? »Considéré comme un seul caractère. La fonction NLS_INITCAP reconnaît cette circonstance lors de la spécification de la règle NLS_SORT et convertit correctement les caractères du mot "zer" ("fer" en Pays-Bas).

  • Nls_lower (string1) et nls_lower (ligne1, "nls_sort \u003d règles_stors") renvoie une chaîne 1 convertie en un registre inférieur en fonction des règles de la langue spécifiée. À propos de la manière dont le NLS_SORT peut affecter le résultat de la conversion est décrit dans la description de la fonction NLS_INITCAP.
  • Nls_upper (ligne1) et nls_upper (string1, "nls_sort \u003d règles_r_stors") renvoie une chaîne1 convertie en le registre supérieur en fonction des règles de la langue spécifiée. À propos de la manière dont le NLS_SORT peut affecter le résultat de la conversion est décrit dans la description de la fonction NLS_INITCAP.
  • Nlssort (ligne1) et nlssort (ligne1, "nls_sort \u003d règle de tri") renvoie une chaîne d'octets pouvant être utilisée pour trier la valeur de chaîne en fonction des règles de la langue spécifiée. La chaîne renvoie au format RAW. Par exemple, une comparaison de deux lignes selon les règles de la langue française est effectuée comme suit: Si Nlssort (x, "nls_sort \u003d xfrench")\u003e nlssort (y, "nls_sort \u003d xfrench") alors ... si la seconde Le paramètre n'est pas spécifié, la fonction utilise l'ordre de tri par défaut nommé pour la session. Une liste complète des règles est fournie dans le Guide de support de la mondialisation de la base de données Oracle, l'annexe A, la section «Tremples linguistiques».
  • REGEXP_COUNT, REGEXP_INSTR, REGEXP_LITY, REGEXP_REPLACE, REGEXP_SUBSTR Pour descriptions de ces fonctions conçues pour fonctionner avec des expressions régulières peuvent être étudiées.
  • Remplacer (Line1, désiré_stroke, Remplacement) renvoie la chaîne obtenue à la suite du remplacement de toutes les occurrences de la version souhaitée de la chaîne de remplacement. La fonction Remplacer peut être utilisée pour remplacer toutes les occurrences d'une sous-chaîne spécifique dans une instruction.
  • Remplacer (ligne1, désiré_stalk)
    Retourne la chaîne obtenue à la suite de la suppression de toutes les occurrences de la désirée_stroke à partir de la chaîne1.
  • RPAD (ligne11, final_dlin)
    Renvoie la valeur de la chaîne1, complétée sur les bons espaces à la finale_dlin. La fonction a la variété suivante:
  • RPAD (ligne1, final_dlin, agrégat)
    Rejoint une quantité suffisante d'entrées complètes ou partielles afin que la longueur totale de la chaîne a atteint la finale_dlin résultante. RPAD Call ("Joyeux Noël!", 25, "Ho!") Renvoyer le résultat "Joyeux Noël! Ho! Ho!".

La fonction RPAD complète la chaîne à droite et la paire de la fonction LPAD est à gauche.

  • Rtrim (ligne1)
    Supprime les espaces du bord droit de la chaîne1. Voir aussi les descriptions des fonctions de trim (standard ISO) et ltrim. La fonction a la variété suivante:
  • Rtrim (string1, supprimé_nabot)
    Supprime les caractères inclus dans la chaîne supprimée_nabor, à partir du bord droit de la ligne1.
  • Soundex (ligne1)
    Renvoie une chaîne avec une "représentation phonétique" de l'argument.
    Exemple:
Soundex ("Smith") -\u003e "S530" Soundex ("Smythe") -\u003e "S530" Soundex ("Smith Smith") -\u003e "S532" Soundex ("Smith z") -\u003e "S532" Soundex (" Feuerstein ") -\u003e" F623 "Soundex (" Feuersers ") -\u003e" F623 "

Lorsque vous utilisez la fonction Soundex, plusieurs règles doivent être rappelées:

  • La valeur Soundex commence toujours par la première lettre de ligne d'entrée.
  • La valeur de retour n'est générée que par les cinq premières consonnes de la chaîne.
  • Pour calculer la partie numérique, Soundex utilise uniquement des consonnes. Toutes les voyelles dans la ligne, à l'exception de l'initiale, sont ignorées.
  • La fonction Soundex ignore le registre des symboles; Pour les lettres du registre supérieur et inférieur, les mêmes valeurs Soundex sont générées.

La fonction Soundex est utile pour les requêtes dans lesquelles la rédaction exacte de la valeur dans la base de données est inconnue ou ne peut pas être facilement définitivement.

Soundex Algorithm est axé sur l'anglais; Dans d'autres langues, cela peut travailler mal (ou ne pas travailler du tout).

  • Substr (ligne1, initiale_position, longueur)
    Renvoie une sous-chaîne de la chaîne1, qui commence par la position initiale et a une longueur donnée. Si le nombre de caractères à la fin de la ligne1 sera inférieur à la longueur, tous les caractères de la position initiale avant la fin de la ligne sont renvoyés. La fonction a les variétés suivantes:
  • SUBSTR (LINE1, INITIAL_POSITION)
    Renvoie tous les caractères de la postition initiale à la fin de la ligne1.
  • Substr (ligne1, négatif_nachable_position, longueur)
    La position initiale de la sous-chaîne est comptée à partir de la fin de la ligne1.
  • Substrateur (line1, négatif_nachable_position)
    Renvoie les dernières chaînes ABS (Négative_NaChable_Position).

La fonction substraire considère la chaîne en tant que séquence de caractères. Son groupe Substrb, Substr2 et SubR4 affiche la chaîne en tant que séquence d'octets, unités de codes (points de code) Unicode, respectivement. Le type de substrc considère la chaîne en tant que séquence de symboles complets d'UNICODE. Par exemple, la chaîne "A \\ 0303", qui est un "\\ 00e3" décomposé, ou a, est considérée comme un caractère. Au contraire, la fonction substraire prend en compte "A \\ 0303" en tant que séquence de deux caractères.

  • To_char (National_Simvol_Dany)
    Convertit les données d'un symbole national défini en une vue équivalente dans un ensemble de symboles de base de données. Aussi, voir à_nchar.

La fonction TO_CHAR peut également être utilisée pour convertir la date / l'heure et les numéros de la forme stable.

  • To_multi_byte (ligne1)
    Convertit les caractères monopytes dans leurs équivalents multi-octets. Dans certains codages multibytaires, et surtout UTF-8, plusieurs options pour représenter un caractère. Par exemple, dans UTF-8, la présentation de la lettre "G" peut contenir de 1 à 4 octets. Pour passer d'une vue à l'octet à Multibyte, la fonction To_Multi_byte est utilisée. Cette fonctionnalité est inverse sur TO_SINGLE_BYTE.
  • To_nchar (symboles_v_nabel__data)
    Convertit les données d'un symbole de base de données définie en une vue équivalente dans un ensemble de caractères national. Aussi, voir à_charne et traduisez ... en utilisant.

La fonction TO_NCHAR peut également être utilisée pour convertir la date / l'heure et les numéros sur la forme cuit à la vapeur.

  • To_single_byte (ligne1)
    Convertit les caractères multibytes en équivalents monte-octets. La fonction est inverse sur TO_MULTI_BYTE.
  • Traduire (Line1, désiré_nabot, Set_Names)
    Remplace dans la ligne 1 chaque occurrence du caractère à partir du symbole souhaité, le symbole correspondant de la numérotation. Exemple:
Traduire ("ABCD", "AB", "12") -\u003e "12CD"

Si le nom_nuit_nabon contient plus de caractères qu'un ensemble de sélectionneurs, les symboles "extra" qui ne sont pas conformes dans l'ensemble de commandes ne sont pas inclus dans le résultat. Exemple:

Traduire ("ABCDEFG", "ABCD", "ZYX") -\u003e "ZYXEFG"

La lettre "D" est supprimée, car elle est présente dans l'artistic_nableal, mais n'a pas l'équivalent dans l'ensemble. La fonction TRADUCTION remplace les caractères individuels et la fonction Remplacer est des lignes entières.

  • Traduire (à l'aide du texte Char_cs) et traduisez (texte à l'aide de NCHAR_CS)
    Convertit les données de caractères en un ensemble de symboles de base de données (char_cs) ou un jeu de caractères national (NCHAR_CS). Le type de données de sortie sera VARCHAR2 ou NVARCHAR2, selon que la conversion vers un ensemble de caractères de base de données ou un ensemble de caractères national, respectivement.

La fonction TRADUCTION ... L'utilisation est l'une des fonctions SQL conformément à la norme ISO. En commençant par Oracle9i version 1, vous pouvez simplement affecter la valeur de la variable VARCHAR2 NVARCHAR2, et inversement - le système effectuera implicitement la conversion souhaitée. Si vous souhaitez effectuer une conversion explicitement, utilisez les fonctions TO_CHAR et TO_NCHAR pour convertir le texte en un ensemble de symboles de base de données et un jeu de caractères national, respectivement. Oracle recommande d'utiliser les fonctions spécifiées au lieu de traduire ... en utilisant, car ils supportent un ensemble plus large de types d'entrée de données.

  • Couper (Frot Line1)
    Renvoie la chaîne obtenue à la suite d'une suppression de la ligne1 de toutes les lacunes initiales et finales. La fonction a les variétés suivantes:
  • Couper (menant de ...)
    Supprimer uniquement les lacunes initiales.
  • Couper (traînant de ...)
    Supprimer uniquement les lacunes finales.
  • Garniture (à la fois de ...)
    Enlève les espaces de départ et finis (utilisés par défaut).
  • Couper (... Removable_simal de String1)
    Supprimer les occurrences d'un replacement_simil à la sélection d'un programmeur.

La fonction de garniture a été activée dans Oracle8i de fournir une compatibilité plus complète avec ISO SQL. Il combine la fonctionnalité de Ltrim et Rtrim, mais diffère d'eux par le fait que la garniture vous permet de définir un seul symbole amovible, alors que lorsque vous utilisez Ltrim et RTRIM, vous pouvez définir un ensemble de caractères distants.

  • Unistr (ligne1)
    Renvoie la chaîne1 convertie en unicode; Ainsi, la fonction est inverse par rapport à ascitr. Pour représenter des caractères non imprimables dans la ligne d'entrée, vous pouvez utiliser l'enregistrement \\ xxxx, où xxxx est l'index de code de symbole dans Unicode. Exemple:
Commencer dbms_output.put_line (Unistr ("Euro Sign \\ 20ac")); Finir; Signe euro €.

La fonction fournit un accès pratique à tous les caractères Unicode, y compris ceux qui ne peuvent pas être entrés directement à partir du clavier.

  • Tige (ligne1)
    Convertit toutes les lettres d'une chaîne donnée en enregistrement supérieur. Le type de valeur de retour correspond au type de données d'entrée (char, varchar2, clob). La fonction est inverse par rapport à la baisse. Aussi, voir nls_upper.

Les fonctions que nous discuterons dans cette partie utilisent généralement le code PL / SQL intégré groupé en packages et fournis à Oracle. Quelques valeurs numériques, valeurs de caractère et valeurs de date, d'autres convertissent des données à différents types de données. Les fonctions peuvent utiliser des appels imbriqués et certaines fonctions sont conçues pour fonctionner avec la valeur NULL. Les conditions de cas et de décodage peuvent afficher un résultat différent en fonction des valeurs de données, ce qui permet de la branche dans le contexte de la demande SQL.

Les fonctions sont divisées en deux grands groupes: ceux qui calculent des valeurs pour chaque ligne et ceux qui exécutent un calcul pour toutes les lignes. Nous examinerons les fonctions de conversion, les fonctions de travail avec des données symboliques, des données numériques et du type de données.

Définition de la fonction

La fonction est un programme capable de prendre (mais éventuellement) des paramètres d'entrée, d'effectuer toutes les opérations et de renvoyer la valeur littérale. La fonction ne renvoie qu'une seule valeur d'appel.

Trois composants importants forment une fonction définitive. Le premier est une liste des paramètres d'entrée. Il définit zéro ou plusieurs paramètres pouvant être transmis pour le traitement. Ces paramètres, ou arguments, peuvent être facultatifs (pour être par défaut) et être des types de données différents. Le deuxième composant est le type de données du résultat d'impact. Après exécution, une seule valeur du type de données prédéfini est renvoyée par la fonction. Le troisième composant encapsule les pièces de traitement à effectuer par la fonction et contient un code de programme qui fonctionne avec les paramètres d'entrée, effectue des calculs et renvoie la valeur.

La fonction est souvent décrite comme une boîte noire qui prend les données d'entrée, fait quelque chose et retourne le résultat. Au lieu de se concentrer sur les fonctions, il est plus utile de comprendre quelle fonctionnalité fournit des fonctions intégrées.

Les fonctions d'appel peuvent être intégrées, par exemple, comme F1 (X, Y, F2 (A, B), Z), dans laquelle F2 comporte deux paramètres d'entrée et renvoie le tiers des quatre paramètres de la fonction F1. Les fonctions peuvent fonctionner avec tous les types de données: les données symboliques et numériques les plus couramment utilisées, ainsi que les données de type de données. Ces paramètres de fonction peuvent être des colonnes ou des expressions.

Par exemple, vous pouvez envisager la fonction qui calcule l'âge d'une personne. La fonctionnalité d'âge ne prend qu'un seul paramètre, anniversaire. Le résultat est renvoyé par la fonction d'âge est le nombre d'Âge de l'homme reflétant. Les calculs de la boîte noire tombent dans l'obtention d'une différence entre la date actuelle et l'anniversaire transmis comme paramètre d'entrée.

Types de fonctions

Les fonctions peuvent être divisées à l'échelle mondiale en deux catégories: la chaîne de traitement (fonctions minuscules) et le traitement des lignes de traitement (fonctions de regroupement). Cette allocation est très importante pour comprendre le contexte dans lequel diverses fonctions sont utilisées.

Fonctions de ligne

Plusieurs types de fonctionnalités minuscules sont disponibles, y compris des fonctions d'exécution, des fonctions d'exploitation avec des chiffres, des dates, des fonctions de conversion de type et des fonctions générales. Ces fonctions gèrent une rangée de l'ensemble à l'heure du temps. Si la requête sélectionne dix chaînes, la fonction sera effectuée dix fois, une fois pour chaque ligne avec l'utilisation éventuelle des valeurs de colonne de ligne en tant que paramètres de fonction d'entrée.

La requête suivante sélectionne deux colonnes à partir de la table et de l'expression de régions à l'aide de la fonction Longueur et de la colonne Nom de la région.

sélectionnez Region_ID, Nom de la région, Longueur (Nom de la région) des régions;

La valeur de la valeur de la colonne Région_name est calculée pour chacune des quatre lignes du tableau des régions; La fonction est effectuée quatre fois, renvoyant la valeur littérale à chaque fois.

Les fonctions de ligne utilisent des travaux avec des éléments de données pour l'échantillonnage et les formater avant l'affichage. Les valeurs d'entrée de la fonction minuscule peuvent être une constante ou des données littérale, de colonne, de variables ou d'expressions de colonne, éventuellement à l'aide de fonctions minuscules imbriquées, etc. Les appels imbriqués sont souvent utilisés. Les fonctions peuvent renvoyer la valeur du type de données différent du type de données des paramètres d'entrée. La demande interrompue montre comment la fonction de longueur prend la valeur d'entrée de la chaîne et renvoie le nombre.

En plus de l'utilisation de fonctions dans la section Sélectionner, des fonctions minuscules peuvent être utilisées dans le lieu et la commande par sections.

Caractéristiques du jeu de données

Comme vous pouvez le deviner du nom, ces fonctions fonctionnent plus d'une ligne. L'utilisation typique d'une fonction multi-fonction est le calcul de la valeur ou de la valeur moyenne d'une colonne numérique ou de compter le nombre de lignes à la suite. De telles fonctions sont parfois appelées fonctions de regroupement et nous les examinerons dans le chapitre suivant.

Utilisation des fonctions Changement de registre

Les données dans des tableaux peuvent être remplies de diverses sources: programmes, cryptes, etc. Ne comptez pas que des données symboliques soient entrées dans un registre prédéterminé. Fonctions de chaîne qui modifient le registre sont destinées à deux tâches importantes. Ils peuvent tout d'abord être utilisés pour modifier le registre des données tout en enregistrant ou à la sortie d'informations, ou sous les conditions d'une recherche plus flexible. Il est beaucoup plus facile de rechercher une chaîne à l'aide d'un registre fixe, la quantité de vérifications de toutes les combinaisons du registre supérieur et inférieur. N'oubliez pas que l'appel aux fonctions ne modifie pas les données stockées dans la table. Ils convertissent le résultat du résultat de la requête.

Les paramètres d'entrée peuvent être des littéraux de caractères, des colonnes de type de données, des expressions ou des numéros symboliques et des dates (qui sont implicitement converties en chaînes).

Fonction inférieure

La fonction inférieure remplace tous les symboles du registre d'enregistrement aux symboles équivalents du registre de la ligne. Fonction Syntaqis inférieure (chaîne). Considérons un exemple de demande qui utilise ces fonctions.

sélectionnez Basse (100 + 100), inférieure ('SQL'), inférieure (sysdate) de Dual

Nous avançons que la date actuelle est le 17 décembre 2015. Le résultat de la requête sera la section «200», «SQL» et '17 -Dec-2015 ». L'expression numérique et la date sont implicitement converties à la chaîne avant d'appeler la fonction inférieure.

Dans l'exemple suivant, la fonction inférieure est utilisée pour rechercher des lignes dans lesquelles les lettres 'U' et 'R' dans n'importe quel registre se déplacent

sélectionnez First_Name, Last_Name, Basse (last_name) des employés

où moins (last_name) comme '% ur%';

Vous pouvez écrire une demande similaire sans utiliser la fonction inférieure. Par example

sélectionnez First_Name, last_name des employés

où last_name comme '% ur%' ou last_name comme '% ur%'

ou last_name comme '% ur%' ou last_name comme '% ur%'

Cette demande fonctionne, mais il est trop lourd, et le nombre d'opérateurs augmente de manière exponentielle à mesure que la ligne augmente.

Fonction supérieure

Fonction supérieure L'opposé logique de la fonction inférieure et remplace tous les caractères minuscules de leurs équivalents de capital. Fonction de syntaxe - supérieure (chaîne). Examiner l'exemple

sélectionnez * dans des pays où la majuscule (nom de pays) comme '% u% s% a%';

Cette requête sélectionne des lignes de la table des pays où le nom de pays contient les lettres 'U', 'S', 'A' dans n'importe quel registre dans cette commande.

Fonction initcap

La fonction initcap est souvent utilisée pour afficher les données. Les premiers caractères de chaque mot de la rangée sont convertis dans le registre supérieur, tous les autres caractères sont convertis en équivalents minuscules. Sous le mot, cela signifie un ensemble de caractères qui ne contiennent pas d'espaces ni de spécialistes. Espace, symbole des paupières ainsi que des mysters spéciaux tels que le signe de pourcentage, la marque d'exclamation, le signe de dollar est considéré comme des diviseurs. La fonction initcap reçoit une syntaxe de paramètres et initcap (chaîne). L'exemple suivant montre un exemple d'utilisation de la fonction initcap.

sélectionnez InitCap ('init capuchon ou init_cap ou init% capuchon') de Dual

Le résultat de cette demande sera la ligne init capuchon ou init_cap ou init%.

Utilisation de fonctions de course

Fonctions de travail avec des lignes l'une des fonctionnalités les plus puissantes fournies par Oracle. Ils sont très utiles et compréhensibles presque sans explications détaillées et sont très souvent utilisés par différents programmeurs lors du traitement des données. Les défis ci-joints de ces fonctions sont souvent utilisés. L'opérateur de concaténation peut être utilisé à la place de la fonction Concat. Les fonctionnalités de longueur, d'instr, de substruisement et de remplacement peuvent se compléter, ainsi que RPAD, LPAD et Garniture.

Fonction de concès

La fonction Concat combine deux littéraux, colonnes ou expressions pour établir une grande expression. La fonction Concat a deux paramètres d'entrée. La syntaxe de la fonction Concat (string1, string2) où String1 et String2 peut être une colonne ou une expression de quel symbole littéral. L'exemple suivant montre l'utilisation de la fonction Concat.

sélectionnez Concat ('aujourd'hui est:', Sysdate) de Dual

Le deuxième paramètre de fonction est la fonction Sysdate qui renvoie l'heure actuelle du système. La valeur est convertie en chaîne et le premier paramètre est attaché à celui-ci. Si la date du système actuel est le 17 décembre 2015, la requête reviendra le «Today is: 17-déc-2015 'String.

Considérez comment utiliser la fonction pour combiner trois éléments. Étant donné que la fonction Concat ne peut recevoir que deux paramètres d'entrée, vous pouvez fusionner uniquement deux éléments. Dans ce cas, vous pouvez utiliser l'appel de la fonction en fonction d'une fonction d'appel de fonction. Alors la demande ressemblera à

sélectionnez Concat ('Outer1', Concat ('inner1', 'inner2')) de Dual;

La première fonctionnalité comporte deux paramètres: le premier paramètre est le «extérieur» littéral, et le deuxième paramètre est la fonction de concurrence connectée. La deuxième fonction prend deux paramètres: littéral 'inner1' et littéral 'inner2'. Le résultat de cette demande sera la chaîne "Outer1 Inner1 Inner 2". Les fonctions investies considèrent un peu plus tard.

Longueur

La fonction Longueur renvoie le nombre de caractères qui composent la chaîne. Les espaces, la tabulation et les caractères spéciaux sont pris en compte par la fonction de longueur. La fonction a une longueur de paramètre et de syntaxe (chaîne). Considérez la demande

sélectionnez * dans les pays où la longueur (nom de pays)\u003e 10;

La fonction de longueur est utilisée pour sélectionner les pays dans lesquels la longueur de la longueur est supérieure à dix caractères.

Fonctions RPAD et le LPAD.

Les fonctions RPAD et LPAD renvoient la chaîne de longueur fixe et, si nécessaire, complètent la valeur source avec un ensemble de symboles spécifique à gauche ou à droite. Les caractères utilisés pour ajouter peuvent être littéraux, la valeur de la colonne, l'expression, l'espace (valeur par défaut), la tabulation et les caractères spéciaux. Les fonctions LPAD et RPAD prennent trois paramètres d'entrée et syntaxe LPAD ( s., N.P.) et RPAD ( s., N.P.) où s. - la valeur de la chaîne de traitement, n. - le nombre de caractères du résultat et p. - Symboles pour ajouter. Si le LPAD est utilisé, alors symboles p. Ajouter à gauche jusqu'à la longueur de n. Si RPAD a raison. Notez que si la longueur s. Plus que de longueur n. - alors le résultat sera le premier n. Symboles de la valeur s.. Considérons les requêtes de la figure 10-1

Figure 10-1 - Utilisation des fonctions RPAD et LPAD

La première requête ne modifie pas les données et le résultat n'est pas très lisible par rapport au résultat de la deuxième demande. RPAD est utilisé pour ajouter des espaces là-bas si nécessaire pour le nom_name_name et Last_Name, de sorte que toutes les valeurs étaient de longueur fixe en 18 caractères et que le LPAD est utilisé pour ajouter des espaces au début de la valeur salariale jusqu'à atteindre la longueur de 6 caractères.

Fonctionnalité de garniture

La fonction de garniture supprime les caractères et démarre ou mettant fin à la ligne pour le rendre potentiellement plus court. La fonction accepte le paramètre requis et facultatif. Syntaxe de fonction de garniture ([ traînant.| Menant| Les deux] cultivé. de. chaîne). Chaîne (s) d'entrée de paramètre (s) requise. Les éléments suivants énumèrent les paramètres

  • Garniture (s) lacunes au début à la fin de la ligne
  • Les cultures de s) supprime les symboles de trimgstring à la fin de la chaîne
  • La corporelle de s) supprime les caractères de trimgstring au début de la ligne
  • Condrette de S) ou culottes de s) Supprimez tous les caractères de culotte au début et à la fin de la rangée

sélectionnez la garniture (les deux '*' de '**** caché ****'),

garniture (menant '*' de '**** caché ****'),

couper (traînant '*' de '**** caché ****') de double;

Retour "caché", "caché ****" et "**** caché". Veuillez noter qu'en spécifiant un seul caractère, tous les caractères sont nettoyés s'ils répétés à plusieurs reprises.

Instr. Fonction

La fonction de l'intrigue recherche une sous-chaîne dans la chaîne. Renvoie le numéro indiquant la position à partir de laquelle le N-IDGE commence, à partir de la position de recherche, par rapport au début de la chaîne. Si la sous-chaîne ne se trouve pas dans la chaîne - retourne 0.

La fonction Instrine comporte deux paramètres d'options obligatoires et de deux options facultatives. La fonction de syntaxe Instr (chaîne source, chaîne de recherche ,,,). La valeur par défaut de la position de démarrage de recherche \u003d 1 ou en d'autres termes, le début de la chaîne de chaîne source. La valeur par défaut pour N occurrence \u003d 1 ou la première entrée. Considérer quelques exemples

Query 1: Sélectionnez Instr ('1 # 3 # 5 # 7 # 9 # 9 #', '#') de double;

Query 2: Sélectionnez Instr ('1 # 3 # 5 # 7 # 9 # 9 #', '#', 5) de Dual;

Query 3: Sélectionnez Instr ('1 # 3 # 5 # 7 # 9 # 9 #', '#', 3, 4) de Dual;

La première demande concerne la première entrée de la balise HASH dans la chaîne et renvoie la valeur de 2. La deuxième requête est à la recherche d'une balise de hasch dans une chaîne du cinquième symbole et trouve la première entrée de 6 caractères. La troisième demande recherche la quatrième entrée de la balise HASH à partir du troisième symbole et le trouve en position 10.

Fonction substrative

La fonction SubRSTR renvoie le substitut d'une certaine longueur de la chaîne source à partir d'une position spécifique. Si la position initiale est supérieure à la longueur de la ligne source - la valeur null est renvoyée. Si les longueurs de chaîne initiales ne suffisent pas pour obtenir la valeur de la longueur requise, à partir d'une position spécifique, la partie de la ligne du caractère source est renvoyée à la fin de la ligne.

La fonction SUBSTR comprend trois paramètres, les deux premières sont requises et la syntaxe de substration (chaîne source, position de départ). La valeur par défaut pour les caractères à extraire \u003d la différence entre la chaîne source et la position de départ. Considérez les exemples suivants

Query 1: Sélectionnez Substr ('1 # 3 # 5 # 7 # 9 # 9 #', 5) de Dual;

Query 2: Sélectionnez Substr ('1 # 3 # 5 # 7 # 9 #', 5, 3) de Dual;

Query 3: Sélectionnez Substr ('1 # 3 # 5 # 7 # 9 #', -3, 2) de Dual;

Demande 1 retourne monstre à partir de la position 5. Étant donné que le troisième paramètre n'est pas spécifié, le nombre de caractères est égal à la longueur de la ligne source moins la position de départ et sera six. La première demande retournera la sous-chaîne '5 # 9 # 9 #'. Demandez deux retours trois symboles à partir du cinquième symbole et le résultat de la chaîne sera "5 # 7". La requête trois commence par un moins trois. La position initiale négative indique Oracle que la position initiale est calculée à partir de la fin de la ligne. Ainsi, la position initiale sera la longueur du moins trois et égale à 8. Le troisième paramètre est deux et renvoie la valeur '# 9'.

Remplacer la fonction

La fonction Remplacer remplace toute la saisie de l'élément souhaité à la valeur de la ligne pour la substitution. Si la longueur de l'élément remplaçable n'est pas égale à la longueur de l'élément auquel le remplacement est remplacé, la longueur de la chaîne résultante sera différente de la ligne source. Si la sous-chaîne souhaitée n'est pas trouvée, la chaîne est renvoyée inchangée. Trois paramètres sont disponibles, les deux premières syntaxes obligatoires et d'appel remplacent (chaîne source, élément de recherche,). Si nous ne spécifions clairement pas le paramètre Remplacer l'élément, toutes les recherches de l'élément de recherche sont supprimées de la ligne source. En d'autres termes, remplacer l'élément est égal à une chaîne vide. Si tous les caractères de chaîne source sont remplacés par un élément de remplacement vide renvoie NULL. Considérons plusieurs demandes

Query 1: Sélectionnez Remplacer ('1 # 3 # 5 # 9 #', '#' ',' -\u003e ') de Dual

Query 2: Sélectionnez Remplacer ('1 # 3 # 9 # 9 #', '#') de Dual

Query 3: Sélectionnez Remplacer ('#', '#') de Dual

Hash dans la première requête indique un caractère de recherche et de chaîne à remplacer '-\u003e'. Le hash apparaît dans la ligne cinq fois et est remplacé, nous obtenons la chaîne finale '1-\u003e 3-\u003e 5-\u003e 7-\u003e 9-\u003e'. La demande 2 n'indique pas une ligne claire pour le remplacement. La valeur par défaut est une chaîne vide et le résultat sera '13579'. La demande numéro trois retournera null.

Utilisation de fonctions numériques

À Oracle, il existe de nombreuses fonctionnalités intégrées pour travailler avec des chiffres. Une différence essentielle entre la fonction numérique et d'autres est que ces fonctions sont reçues par des paramètres uniquement des numéros et ne renvoient que des chiffres. Oracle fournit des fonctions numériques pour travailler avec des expressions trigonométriques, exponentielles et logarithmiques et avec beaucoup d'autres. Nous nous concentrons sur de simples caractéristiques minuscules numériques: rond, tronc et mod.

Fonction ronde

La fonction ronde arrondit le nombre en fonction de la précision requise. La valeur de retour est arrondie ou grande ou de plus petite, en fonction de la valeur du dernier chiffre dans la décharge requise. Si la valeur de la précision N, la figure qui sera arrondie sera sur la position N après la virgule et que la valeur dépendra du nombre de la position (N + 1). Si la valeur de précision est négative, tous les nombres après la sortie N à gauche des points-virgules seront 0 et la valeur n dépendra de N + 1. Si la valeur du nombre sur lequel l'arrondi dépend plus ou égale à 5, l'arrondi se produit d'un côté majeur, sinon il est plus petit.

La fonction ronde reçoit deux paramètres d'entrée et syntaxe ronde (numéro de source, précision décimale). Le numéro de source peut être n'importe quel numéro. Le paramètre de précision décimale détermine la précision souhaitée et optionnelle. Si ce paramètre n'est pas spécifié, la valeur par défaut sera 0, ce qui signifie que la nécessité d'arrondir à l'entier le plus proche.

Considérez le tableau 10-1 pour les chiffres 1601.916. Les valeurs négatives de la précision sont à gauche du point (la partie entière), lorsque le positif est considéré à la droite du point (partie fractionnelle).

Si l'unité de valeur de précision, la valeur est arrondie jusqu'à une tente. Si deux, la valeur est arrondie sur le second ordre, etc. Les demandes suivantes affichent l'utilisation de cette fonction.

Query 1: Sélectionnez la ronde (1601.916, 1) de Dual;

Query 2: Sélectionnez le tour (1601.916, 2) de Dual;

Query 3: Sélection de la ronde (1601.916, -3) de Dual;

Query 4: Sélectionnez la ronde (1601.916) de Dual;

La première demande utilise le paramètre de précision égal à un, ce qui signifie que le nombre sera arrondi au dixième près. Étant donné que la valeur de la cellule est égale à une (moins de 5), l'arrondi est arrondi de plus en plus petit et la valeur de 1601,9 est renvoyée. La précision de la deuxième requête est égale à la fois deux fois, la valeur est donc entourée de la cellule. Étant donné que la valeur de la millième partie est de 6 (qui est supérieure à 5), la valeur de la partie cellulaire est arrondi et renvoie la valeur de 1601.92. La valeur du paramètre de précision dans la troisième demande est moins trois. Étant donné que la valeur est négative, cela signifie que l'arrondi se produira sur la base de la valeur de la troisième position à gauche du point, dans la deuxième catégorie (des centaines) et de la valeur 6. Depuis 6 plus de cinq, puis arrondis et retourne La valeur de 2000. La demande 4 provoque une fonction sans paramètre de précision. Cela signifie que le nombre est arrondi au tout le plus proche. Étant donné que la dixième partie est 9, la valeur est arrondie de manière large et une valeur de 1602 est renvoyée.

Trunc de la fonction numérique

Foducture Trunc réduit la valeur du numéro en fonction de la valeur du paramètre de précision. La réduction diffère de l'arrondissement du fait que la réduction d'une partie supplémentaire coupait simplement et aucun changement ne se produit sur les chiffres restants. Si la valeur de précision est négative, la valeur d'entrée est réduite à la position à gauche de la virgule. TRUNC Feature Syntaxe (numéro de source, précision décimale). Le paramètre Numéro de source peut être n'importe quel nombre et ce paramètre est requis. Le paramètre de précision décimale détermine la position d'arrondi et n'est pas nécessaire, la valeur par défaut sera nulle, ce qui signifie une réduction à un entier.

Si la valeur de la précision décimale est égale à une, le nombre est réduit aux dixièmes, si deux, puis à centièmes, etc. Considérez plusieurs exemples d'utilisation de cette fonctionnalité.

Query 1: Sélectionnez Trunc (1601.916, 1) de Dual;

Query 2: Sélectionnez Trunc (1601.916, 2) de Dual;

Query 3: Sélectionnez Trunc (1601.916, -3) de Dual;

Query 4: Sélectionnez Trunc (1601.916) de Dual;

Enquête 1, la précision est utilisée égale à une, ce qui signifie la réduction de la valeur aux dixièmes et retourne à 1601,9. La précision de la deuxième requête est deux, la valeur initiale est réduite à des centièmes et retourne à 1601,91. Veuillez noter que la valeur obtenue sera différente de la valeur renvoyée par la fonction ronde avec les mêmes paramètres, car lorsque vous appelez autour de l'arrondi, il se produira au grand côté (6 de plus 5). Dans la requête numéro trois utilise un nombre négatif comme valeur du paramètre de précision. La position trois à gauche de la virgule signifie que la réduction sera jusqu'à la troisième catégorie (des centaines de personnes sont réduites), comme indiqué dans le tableau 10-1 et la valeur de retour sera de 1000. Et enfin, dans la quatrième demande, la valeur de la valeur de la quatrième demande de La précision est clairement non spécifiée et la partie fractionnée du nombre initial est clairement indéterminée. Le résultat sera de 1601.

Fonction mod

La fonction mod renvoie le solde de la division. Deux chiffres, divisibles (le nombre divisé) et le diviseur (le nombre auquel est divisé) est défini comme des paramètres et l'opération de division est calculée. Si divisible est divisé en diviseur, il est renvoyé à zéro, car il n'y a pas de résidus. Si le diviseur zéro, l'erreur de fission ne se produit pas sur zéro, mais est retournée à la divi. Si le diviseur est plus que divisible, Delimi est renvoyé.

La fonction MOD comporte deux paramètres d'entrée et Syntax Mod (dividende, diviseur). Les paramètres de dividende et de diviseur peuvent être des littéraux numériques, des colonnes ou des expressions et peuvent être positifs ou négatifs. Les exemples suivants montrent l'utilisation de cette fonction.

Query 1: Sélectionnez MOD (6, 2) de Dual

Query 2: Sélectionnez MOD (5, 3) de Dual

Query 3: Sélectionnez Mod (7, 35) de Dual

Query 4: Sélectionnez MOD (5.2, 3) de Dual

Dans la requête, on est divisé en deux visé sans résidu et retourne 0. Dans la requête, deux 5 sont divisés en 3, la partie entière sera 1 et renvoie le résidu 2. Dans le numéro de requête trois sept est divisé par 35. Puisque le diviseur est plus que divisible - Delimi ceux-ci. Partie entière 0. La requête quatre utilise un nombre fractionnaire comme divisible. La partie entière sera un et le résidu sera 2,2.

Tout un à un est divisé en deux sans résidus, tout nombre impair lors de la division de deux retournera le résidu 1. Par conséquent, la fonction MOD est souvent utilisée pour distinguer des nombres païens et impairs.

Travailler avec des dates

Les caractéristiques travaillant avec des dates offrent un moyen pratique de résoudre des tâches liées aux dates sans avoir à prendre en compte les années d'âge de haut niveau, combien de jours dans un mois donné. Premièrement, nous considérons que la mise en place de la mise en forme de type de données et de la date de la date, ainsi que de la fonction Sysdate. Considérez les fonctions des mois, mois_between, Last_DAT, Next_Day, Tour et Trunc.

Dates de stockage dans la base de données

La base de données stocke des données comme un nombre capable de maintenir le calcul du siècle, de l'année, du mois et de la journée, ainsi que des informations sur l'heure, telles que l'heure, la minute et la seconde. Lorsqu'une requête de données survient, une certaine formatage (masque) est superposée et le masque par défaut affiche la journée, les trois premières lettres du nom du mois et deux chiffres affichant l'année.

SYSDATE FONCTION

La fonction Sysdate n'utilise pas les paramètres d'entrée et renvoie l'heure et la date actuelles définies sur le serveur de base de données. Par défaut, la fonction Sysdate renvoie une date DD-MON-RR et affiche la date sur le serveur. Si le serveur est installé dans un autre fuseau horaire que celui de la machine client, l'heure et la date renvoyées par Sysdate peuvent différer des valeurs locales sur la machine cliente. Vous pouvez exécuter une telle demande d'afficher la date du système sur le serveur.

sélectionnez Sysdate de Dual

Arithmétique sur les dates

L'équation concerne le principe le plus important lorsque vous travaillez avec des dates

Date1 - Date2 \u003d Num1

La date peut être déduite d'une autre date. La différence entre les deux dates est comprise comme le nombre de jours entre eux. Tout nombre, y compris fractionné, peut être ajouté ou déduit de la date. Dans ce contexte, le nombre est le nombre de jours. Le montant ou la différence entre le nombre et la date est toujours la date. Ce principe implique que l'addition, la multiplication ou la division de deux dates est impossible.

Fonctionnalité des mois_Entre.

La fonction Mois_between renvoie le nombre de mois entre deux paramètres d'entrée obligatoire. La syntaxe de la fonction mois_between (date1, date2). La fonction calcule la différence entre la date1 et la date2. Si la date1 est inférieure à la date2, un nombre négatif est renvoyé. La valeur de retour peut consister en une partie entière reflétant le nombre de mois entre deux dates et une partie fractionnée reflétant combien de jours et d'heures reste (basé sur un mois égal à 31 jours) après la déduction d'un mois entier. L'entier est inspiré si le jour des mois les plus complets est le même ou le dernier jour du mois correspondant.

Les exemples suivants sont utilisés par les livres de mois_between

Query 1: Sélectionnez les mois_between (sysdate, sysdate-31) de Dual;

Nous reproduisons que la date actuelle est la date du 16 avril 2009. La demande que l'on renverra l'un comme le nombre de mois entre le 16 avril 2009 et le 16 mars 2009. La requête Deux convertit implicitement des littéraux littéraux à l'aide de la format DD-Mon-AaAyy. Étant donné qu'une partie de l'heure omis omise définira la valeur de l'heure 00.00.00 pour les deux dates. La faucheuse retournera la valeur approximativement égale à 1.03225806. La partie du résultat indique qu'entre les dates un mois. Entre le 28 février et le 28 mars, exactement un mois. Ensuite, la partie fractionnée devrait montrer exactement un jour. Le résultat comprend une minute d'horloge et des secondes, mais dans notre cas, la composante temporelle des dates est la même. La multiplication 0.03225806 à 31 retournera 1, car la partie fractionnée renvoyée par MONHS_BETWEEN est calculée, permettant au mois de égale à 31 jours. Par conséquent, le nombre du numéro trois retournera la valeur de 32.

Une erreur populaire est l'hypothèse que la fonction de type de données retourné dépend du type de fonction (la fonction de travail avec la date doit renvoyer la date de traitement de la date, la chaîne de traitement de la ligne). Ceci est vrai uniquement pour les fonctions numériques. Les fonctions symboliques et la fonction DATES peuvent renvoyer la valeur de tout type de données. Par exemple, Instr est une fonction symbolique et monts_between la fonction de travail avec la date, mais les deux renvoient le nombre. Aussi souvent souvent raisonnablement que la différence entre les dates est la date à laquelle il est en réalité le nombre.

Ajouter une fonctionnalité_Mois.

La fonction Add_Months renvoie la date reçue en ajoutant un certain nombre de mois à la date source. Cette fonctionnalité dispose de deux paramètres requis et de la syntaxe Add_Months (date de début, nombre de MONHS). La valeur de paramètre Nombre de mois peut être négative, puis la valeur initiale diminuera sur ce nombre de mois et de fractions, mais seule une partie entière sera prise en compte. Les trois demandes suivantes montrent l'utilisation de la fonctionnalité Add_Months.

Le résultat de la première demande sera le même jour le 7 mai 2009, à mesure que la journée reste la même si elle est possible et le mois augmente d'une. Dans la deuxième demande, le nombre de mois est fractionnaire, qui est ignoré, c'est-à-dire que cette requête est égale à add_months ('31 -Dec-2008 ', 2). L'ajout de deux mois devrait renvoyer le 31 février 2009, mais cette date n'existe pas, le dernier jour du mois est renvoyé. Dans le dernier exemple, un nombre négatif est utilisé pour le nombre de mois mensuels et renvoie la date 07-avr-2008 que pendant douze mois plus tôt que la valeur initiale.

Fonction suivante_Jour

La fonction NEXT_Date renvoie le prochain jour le plus proche de la semaine après la date initiale. Cette fonctionnalité comporte deux paramètres requis et syntaxe Next_Day (date de début, jour de la semaine). La fonction de l'événement est la valeur lorsque le jour spécifié de la semaine se produira après la date de début. Le paramètre Dae of the Week peut être spécifié à la fois par le numéro et la chaîne. Les valeurs admissibles sont déterminées par le paramètre nls_date_languaguaguaguagua et les trois premières lettres du jour de la semaine de n'importe quel registre (Sun, Mon, etc.) ou des entiers où 1 dimanche, 2 - lundi et ainsi de suite. En outre, les noms des jours de la semaine peuvent être plus de trois symboles; Par exemple, le dimanche peut être spécifié comme dimanche, dimanche, dimanche. Considérons plusieurs demandes

1er janvier 2009 C'est jeudi. Le mardi suivant sera dans 5 jours, le 6 janvier 2009. La deuxième demande reviendra le 7 janvier 2009 - mercredi prochain après le 1er janvier. La troisième requête utilise un numéro comme paramètre et si vous avez des valeurs américaines installées, le cinquième jour est jeudi. Jeudi prochain après le 1er janvier, exactement une semaine - 8 janvier 2009.

Dernière fonction_Jour

La fonction Last_Day renvoie la date du dernier jour de la date initiale. Cette fonctionnalité nécessite un paramètre et une syntaxe requis Last_Day (date de début). La fonction choisit le mois de la date d'origine, puis calcule le dernier jour du mois. La demande suivante reviendra le 31 janvier 2009

Fonction ronde Travailler avec des dates

La fonction ronde arrondit la valeur de la date à la précision de la date spécifiée. La valeur de retour est arrondie soit à plus de valeur plus faible en fonction de la valeur de l'élément arrondi. Cette fonctionnalité nécessite un paramètre obligatoire et permet une option et une syntaxe de la fonction ronde (date de la source). Le paramètre de données source peut être n'importe quel type de type de type de données. Le paramètre Format de précision de la date détermine le niveau d'arrondi et la valeur par défaut est un jour. Le paramètre de format de précision Date de précision peut être un siècle (CC) Année de Yyyy Quartier Q Yyy M Week M Semaine W Day DD Hour HH Minute MI.

L'arrondi au siècle équivaut à ajouter une unité au siècle actuel. L'arrondi jusqu'au mois sera dans le plus grand si le jour est plus de 16 ans sinon, il y aura arrondir jusqu'au premier jour du mois. Si un mois de 1 à six arrondi sera avant le début de cette année, sinon la date du début de la prochaine année sera de retour. Considérez la demande

Supposons que cette demande soit terminée le 17 avril 2009 à 00h05. Au début, arrondi la date actuelle avant la journée (le paramètre de précision est clairement indéterminé). Depuis le temps 00:05 Le jour n'est pas arrondi dans la Grande Partie. Ainsi, 1 avril 2009, il s'agit d'un support, la deuxième colonne retournera le mercredi de la semaine dans laquelle la date d'origine comprend. Le premier environnement de la semaine, qui comprend le 19 avril - le 15 avril 2009. La troisième colonne vient le mois au prochain (au plus de 17 ans de plus de 16 ans) et retourne le 01 mai 2009. La colonne d'une demi-journée arrondit la date à l'année et le rendement du 1er 2009, depuis avril est un 4ème mois.

Fonction de trunc Lorsque vous travaillez avec des dates

La fonction Trunc réduit la date en fonction du paramètre de précision. Cette fonctionnalité comporte un paramètre obligatoire et une syntaxe d'appel de tronc (date de la source). Le paramètre Date source peut être n'importe quelle date valide. Le paramètre de format de précision de la date détermine le niveau de réduction de la date et facultatif, la valeur par défaut est réduite au jour. Cela signifie que toutes les valeurs de temps sont réinitialisées - 00 heures 00 minutes 00 secondes. L'abréviation au mois retournera la date égale au premier jour du mois de la date initiale. Réduire jusqu'à une année - retournera le premier jour de la date d'origine. Considérons une demande en utilisant une fonction avec différents paramètres.

Cette demande est effectuée le 17 avril à 00h05. La première colonne réduit la date du système jusqu'au jour de la journée, l'heure est convertie de 00:05 à 00h00 (le paramètre de précision est clairement non spécifié, la valeur par défaut est utilisée) et la journée en cours est renvoyée. La deuxième colonne réduit la date avant le même jour de la semaine, qui a été le premier jour du mois (mercredi) et retourne le mercredi de la semaine en cours - 15 avril. La troisième colonne réduit la date jusqu'au mois et retourne le premier jour du mois - 1er avril. La quatrième colonne réduit la date à l'année et retourne le premier jour de l'année.



Avez-vous aimé l'article? Partagez-le