"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment extraire de manière fiable la nième valeur d'une liste séparée par des virgules dans SQL, gérant Nulls?

Comment extraire de manière fiable la nième valeur d'une liste séparée par des virgules dans SQL, gérant Nulls?

Publié le 2025-02-12
Parcourir:586

How to Reliably Extract the Nth Value from a Comma-Separated List in SQL, Handling Nulls?

Solution regex pour sélectionner une valeur spécifique dans la liste séparée des virgules avec Nulls

lors de l'extraction de la nth de valeur à partir d'une liste séparée par des virgules à l'aide de regexp_substrstr (), la gestion des valeurs nuls peut être délicate. Voici un examen détaillé du problème et une solution complète.

Tout d'abord, considérez le scénario suivant:

SQL> select REGEXP_SUBSTR('1,2,3,4,5,6', '[^,] ', 1, 2) data
from dual;

D
-
2

Cette requête récupère avec succès la deuxième valeur non nulle ("2") de la liste en utilisant l'expression régulière [^,]. Cependant, lorsque la deuxième valeur est nul, la requête renvoie le troisième élément:

SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,] ', 1, 2) data
from dual;

D
-
3

Cependant, ce regex échoue également pour les nombres au-delà du null. 4,5 ',' (. *?) (, | $) ', 1, 2, null, 1)

SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,]*', 1, 4) data
from dual;

D
-
3

données ----

Pour encapsuler cette solution en une fonction réutilisable, considérez le code suivant:

REGEX_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1)

Cette fonction peut être appelée comme ceci:

Data
----

indépendamment du potentiel NULLS ou du Dual;

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;
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3