Maison > base de données > tutoriel mysql > Comment extraire la nième valeur d'une chaîne séparée par des virgules, en gérant les valeurs nulles ?

Comment extraire la nième valeur d'une chaîne séparée par des virgules, en gérant les valeurs nulles ?

Patricia Arquette
Libérer: 2025-01-01 05:31:09
original
986 Les gens l'ont consulté

How to Extract the nth Value from a Comma-Separated String, Handling Nulls?

Extraction d'une nième valeur d'une liste séparée par des virgules avec gestion des valeurs nulles

Lors de l'utilisation de REGEXP_SUBSTR() pour extraire la nième valeur d'une virgule- liste séparée, la gestion des valeurs nulles peut être difficile. Pour y parvenir, une modification de l'expression régulière est nécessaire.

L'expression originale, REGEXP_SUBSTR('1,,3,4,5', '[^,] ', 1, 2), renvoie le deuxième occurrence d'un ou plusieurs caractères autres que des virgules. Cependant, lorsqu'il rencontre une valeur nulle, il l'interprète comme le début d'une nouvelle valeur non vide et renvoie le troisième élément au lieu de la valeur nulle attendue.

Pour résoudre ce problème, l'expression est modifiée pour autoriser zéro ou plus de caractères autres que des virgules : REGEXP_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1). Il identifie la valeur souhaitée en recherchant zéro ou plusieurs caractères suivis d'une virgule ou de la fin de la ligne, et renvoie uniquement le premier sous-groupe (les données souhaitées).

Cette expression améliorée gère correctement les valeurs nulles, renvoyant null si le deuxième élément est vide. La fonction GET_LIST_ELEMENT() encapsule cette logique pour une réutilisation plus facile :

  FUNCTION  GET_LIST_ELEMENT(string_in VARCHAR2, element_in NUMBER, delimiter_in VARCHAR2 DEFAULT ',') RETURN VARCHAR2 IS
    BEGIN
      RETURN REGEXP_SUBSTR(string_in, '(.*?)(\'||delimiter_in||'|$)', 1, element_in, NULL, 1);
  END GET_LIST_ELEMENT;
Copier après la connexion

Cette approche prend en charge les valeurs nulles et permet la sélection de n'importe quelle valeur dans la liste.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal