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 ?
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!