Maison >base de données >tutoriel mysql >Comment extraire des sous-chaînes avant un trait de soulignement dans Oracle SQL ?

Comment extraire des sous-chaînes avant un trait de soulignement dans Oracle SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-29 00:26:09432parcourir

How to Extract Substrings Before an Underscore in Oracle SQL?

Extraction de sous-chaînes vers un caractère spécifique dans Oracle SQL

Problème :
Sélection de sous-chaînes à partir d'une colonne contenant des résultats avec des séquences de caractères variables avant un caractère de soulignement ("_"), tout en excluant le trait de soulignement lui-même.

Solution :

Pour obtenir le résultat souhaité, une combinaison de fonctions SQL fournit une solution :

SELECT NVL(SUBSTR(column, 0, INSTR(column, '_')-1), column) AS output
FROM YOUR_TABLE;

Explication :

  • La fonction SUBSTR extrait une sous-chaîne en commençant à partir de la position spécifiée (0) et en continuant pendant une longueur spécifiée.
  • La fonction INSTR détermine la position de la première occurrence du caractère de soulignement dans la chaîne.
  • La fonction NVL évalue la première valeur non nulle, garantissant que les sous-chaînes sans trait de soulignement caractère renvoie la valeur d'origine.
  • La soustraction de 1 de INSTR(colonne, '_') garantit que seuls les caractères précédant le trait de soulignement sont inclus dans le sortie.

Exemple :

Donné :

ORG | VALUE
1   | ABC_blahblahblah
2   | DEFGH_moreblahblahblah
3   | IJKLMNOP_moremoremoremore

Requête :

SELECT NVL(SUBSTR(VALUE, 0, INSTR(VALUE, '_')-1), VALUE) AS output
FROM ORG;

Résultat :

OUTPUT
ABC
DEFGH
IJKLMNOP

Remarque :

Pour Versions Oracle10g, la fonction REGEXP_SUBSTR peut être utilisée comme alternative à SUBSTR :

SELECT REGEXP_SUBSTR(column, '^.*(?=_)') AS output
FROM YOUR_TABLE;

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