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;
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