Maison >base de données >Oracle >Comment intercepter certains caractères dans une chaîne dans Oracle

Comment intercepter certains caractères dans une chaîne dans Oracle

青灯夜游
青灯夜游original
2022-02-14 12:47:0556636parcourir

Dans Oracle, vous pouvez utiliser les fonctions Instr() et substr() pour intercepter une partie des caractères de la chaîne. La syntaxe est "SUBSTR('Chaîne à intercepter', position de départ de l'interception, INSTR('Chaîne à intercepter', position de départ de l'interception, INSTR('Chaîne à intercepter'). intercepté" ,'','Position de départ de la recherche','Nombre d'occurrences')-1) ".

Comment intercepter certains caractères dans une chaîne dans Oracle

L'environnement d'exploitation de ce tutoriel : système Windows 7, version Oracle 11g, ordinateur Dell G3.

oracle intercepte une partie de la chaîne dans le champ

Utilisez les fonctions Instr() et substr() dans Oracle :

Dans Oracle, vous pouvez utiliser la fonction instr pour juger une chaîne afin de déterminer si il contient les caractères spécifiés.

La syntaxe est :

instr(sourceString,destString,start,appearPosition).   
instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')

  • sourceString représente la chaîne source ;

  • destString représente la sous-chaîne à trouver dans la chaîne source ;

  • start représente la position de départ de la recherche ; paramètre Facultatif, la valeur par défaut est 1 ;

  • lookingPosition représente le nombre d'occurrences de destString que vous souhaitez rechercher à partir du caractère source. Ce paramètre est également facultatif et la valeur par défaut est 1 

Si la valeur de start est. un nombre négatif, la recherche s'effectue ensuite de droite à gauche, mais les données de position sont toujours calculées de gauche à droite.

La valeur de retour est : la position de la chaîne trouvée.

Pour la fonction instr, nous l'utilisons souvent comme ceci : trouver la position de la sous-chaîne spécifiée à partir d'une chaîne. Par exemple :

SQL> select instr('yuechaotianyuechao','ao') position from dual;
 POSITION
 ----------
 6

Commencez la recherche à partir du 7ème caractère

SQL> select instr('yuechaotianyuechao','ao', 7) position from dual;
 POSITION
 ----------
 17

Commencez à partir du 1er caractère et recherchez la deuxième occurrence de la sous-chaîne

SQL> select instr('yuechaotianyuechao','ao', 1, 2) position from dual;
 POSITION
 ----------
 17

Pour la fonction instr, nous l'utilisons souvent comme ceci : Rechercher la valeur spécifiée à partir d'un string La position de la sous-chaîne. Par exemple :

SQL> select instr('abcdefgh','de') position from dual; 
POSITION 
---------- 
4

À partir de 1, d se classe quatrième, donc 4 est renvoyé

SQL>select instr('abcdefghbc','bc',3) position from dual; 
POSITION 
---------- 
9

À partir du 3ème caractère, le troisième caractère est c, donc la recherche de bc dans la chaîne à partir de 3 renvoie 9

L'utilisation de la fonction substr consiste à obtenir la chaîne avec la position de départ et la longueur spécifiées dans la chaîne. La valeur par défaut est la sous-chaîne de la position de départ à la fin.

 substr( string, start_position, [ length ] )       substr('目标字符串',开始位置,长度)

Tels que :

      substr('This is a test', 6, 2)     would return 'is' 
      substr('This is a test', 6)     would return 'is a test' 
      substr('TechOnTheNet', -3, 3)     would return 'Net' 
      substr('TechOnTheNet', -6, 3)     would return 'The'select substr('Thisisatest', -4, 2) value from dual

Fonction SUBSTR()

1 Utilisation : Renvoie une sous-chaîne à partir d'une expression de caractère ou d'un champ mémo donné.

2. Format de grammaire :

substr(string string, int a, int b);
substr(string string, int a) ; 

Format 1 :

1. chaîne La chaîne qui doit être interceptée

2. a intercepte la position de départ de la chaîne (Remarque : lorsque a est égal à 0 ou 1, elle commence à partir du premier 3. b La longueur de la chaîne à intercepter

Format 2 :

1. chaîne La chaîne à intercepter

2. a peut être compris comme interceptant tous les caractères suivants à partir du a-ème caractère chaîne.

oracle intercepte la chaîne

C3411.907w15 intercepte la chaîne C3411 avant le point SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15, '.', 1, 1) - 1)

SELECT SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15, '.', 1, 1) - 1)
  FROM DUAL

Tronquez la chaîne 907w15 après le point de C3411.907w15 SUBSTR ('C3411.907w15', INSTR ('C3411.907w15', '.', 1, 1)+1)

SELECT SUBSTR ('C3411.907w15', INSTR ('C3411.907w15', '.', 1, 1)+1)
  FROM DUAL

Exemples d'application de projet :

Chaîne d'origine :

Il y a 7 "_" dans le champ d'origine. Maintenant, je veux juste retirer la chaîne après le dernier "_".

Deux étapes :

La première étape consiste à trouver le 7ème caractère "_" via la fonction Instr() :

select instr('Qfang.com Group_Brokerage Division_South China District_Shenzhen Shihua_ Sales Department_Nanshan Qianhai District_Qianhai Central Area_Qianhai Fifth Branch' ,'_', 1, 7) fdisplayname de SHENZHENJM1222.B

ou :

select instr('QFang.com Group_ Brokerage Division_South China District_Shenzhen Shihua_Sales Department_Nanshan Qianhai District_Qianhai Central Area_Qianhai Fifth Branch', '_',

-1, 1) fdisplayname FROM SHENZHENJM1222.BLes deux L'effet est le même. -1 ci-dessous signifie compter le caractère de départ à partir de la droite, 1 signifie obtenir le premier "_"

Le résultat obtenu est tel qu'indiqué. dans la figure :

Étape 2, passez la fonction substr(), supprimez les champs obligatoires :

select substr(

fdisplayname

,instr(fdisplayname,'_',-1,1 )+1) fdisplayname de SHENZHENJM1222.B

fdisplayname

 : représente le nom du champ, équivalent à une métachaîneConcentrons-nous dessus

+1

+1 signifie commencer à intercepter la première chaîne après la chaîne cible "_"

Jetons un coup d'œil à la situation des différents nombres :

select substr(fdisplayname,instr(fdisplayname,'_',-1,1)+1) fdisplayname de SHENZHENJM1222.B

Jetons un coup d'œil à instr(fdisplayname,'_', -1,1) Que signifie 1 dans :

Tutoriel recommandé : "Tutoriel Oracle"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn