Maison >base de données >tutoriel mysql >Comment extraire de manière fiable des valeurs spécifiques de listes séparées par des virgules contenant des valeurs NULL à l'aide de REGEXP_SUBSTR() ?
EXPRESSION RÉGULIÈRE POUR SÉLECTIONNER DES VALEURS INDIVIDUELLES DANS UNE LISTE AVEC DES NULLS
Problème :
REGEXP_SUBSTR () ne parvient pas à récupérer la nième valeur souhaitée à partir d'un liste séparée par des virgules lorsque des valeurs nulles sont présentes. Lorsqu'une valeur est nulle, elle renvoie la valeur non nulle suivante comme nième occurrence.
Solution :
Pour surmonter ce problème, une expression REGEXP_SUBSTR() modifiée peut être employé :
REGEXP_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1)
Cette expression capture les données souhaitées en suivant ces étapes :
Fonction réutilisable :
Pour plus simple et plus utilisation pratique, cette expression REGEXP_SUBSTR() modifiée peut être encapsulée dans un PL/SQL function :
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;
Exemple d'utilisation :
Pour récupérer le 4ème élément de la liste '123,222,,432,555' :
select get_list_element('123,222,,432,555', 4) from dual;
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!