Maison >base de données >tutoriel mysql >Comment diviser efficacement les valeurs séparées par des virgules en plusieurs lignes dans Oracle sans doublons ?

Comment diviser efficacement les valeurs séparées par des virgules en plusieurs lignes dans Oracle sans doublons ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-31 05:48:13453parcourir

How to Efficiently Split Comma-Separated Values into Multiple Rows in Oracle Without Duplicates?

Oracle : diviser efficacement les valeurs séparées par des virgules en plusieurs lignes

Dans les requêtes Oracle, lors de la division de données séparées par des virgules en plusieurs lignes à l'aide de CONNECT BY et expressions régulières, des lignes en double peuvent apparaître. Pour surmonter ce problème, envisagez les stratégies suivantes :

Utilisation de REGEXP_COUNT() pour un fractionnement précis

La requête modifiée introduit REGEXP_COUNT() pour déterminer le nombre de mots séparés par des virgules. valeurs dans chaque ligne :

WITH CTE AS (
    SELECT 'a,b,c,d,e' temp, 1 slno FROM DUAL
    UNION
    SELECT 'f,g' temp, 2 slno FROM DUAL
    UNION
    SELECT 'h' temp, 3 slno FROM DUAL
)
SELECT TRIM(REGEXP_SUBSTR(temp, '[^,]+', 1, level)), slno
FROM CTE
CONNECT BY level <p><strong>Exploiter la connexion par niveau et avant DBMS_RANDOM.VALUE</strong></p><p>Cette requête améliorée utilise CONNECT BY LEVEL avec PRIOR DBMS_RANDOM.VALUE pour éliminer les doublons :</p><pre class="brush:php;toolbar:false">WITH CTE AS (
    SELECT 'a,b,c,d,e' temp, 1 slno FROM DUAL
    UNION
    SELECT 'f,g' temp, 2 slno FROM DUAL
    UNION
    SELECT 'h' temp, 3 slno FROM DUAL
)
SELECT TRIM(REGEXP_SUBSTR(temp, '[^,]+', 1, level)), slno
FROM CTE
CONNECT BY level <p>En utilisant cette requête modifiée, vous pouvez diviser efficacement les virgules- séparer les valeurs en plusieurs lignes tout en garantissant que les lignes en double sont éliminées.</p>

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