Maison >base de données >Oracle >Comment intercepter certains caractères dans une chaîne dans Oracle
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) ".
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('源字符串' , '目标字符串' ,'开始位置','第几次出现')
où
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îneC3411.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 DUALExemples 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.Bou :
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!