Maison > base de données > tutoriel mysql > Comment diviser de manière fiable des valeurs délimitées par des virgules en colonnes de table Oracle ?

Comment diviser de manière fiable des valeurs délimitées par des virgules en colonnes de table Oracle ?

DDD
Libérer: 2025-01-22 09:22:08
original
622 Les gens l'ont consulté

How to Reliably Split Comma-Delimited Values into Oracle Table Columns?

Analyser efficacement les valeurs séparées par des virgules dans les tables Oracle

La gestion de grands ensembles de données avec des valeurs séparées par des virgules (CSV) nécessite souvent de diviser ces valeurs en colonnes individuelles au sein d'une table Oracle pour une analyse et une manipulation rationalisées des données. Bien que les expressions régulières offrent une solution via la fonction REGEXP_SUBSTR, une approche courante utilisant l'expression [^,] peut s'avérer peu fiable.

Cela est particulièrement vrai lorsqu'il s'agit de données CSV contenant des valeurs nulles ou vides. Pour garantir une extraction précise des éléments, indépendamment des valeurs nulles ou des chaînes vides, une expression régulière plus robuste est nécessaire. L'expression suivante est recommandée :

(.*?)(,|$)
Copier après la connexion

Cette expression utilise des groupes de capture pour identifier précisément l'élément souhaité, y compris les virgules de début ou de fin. En spécifiant l'index du groupe de capture (1) dans REGEXP_SUBSTR, vous pouvez récupérer de manière fiable la valeur de l'élément, en gérant correctement les valeurs renseignées et nulles.

Considérez cette requête illustrative :

SELECT
  ROW_NUM,
  REGEXP_SUBSTR(VAL, '(.*?)(,|$)', 1, 1, NULL, 1) AS VAL1,
  REGEXP_SUBSTR(VAL, '(.*?)(,|$)', 1, 2, NULL, 1) AS VAL2
FROM (
  SELECT
    ROWNUM AS ROW_NUM,
    '1.25, 3.87, 2' AS VAL
  FROM dual
  UNION ALL
  SELECT
    ROWNUM,
    '5, 4, 3.3'
  FROM dual
)
Copier après la connexion

Cette requête démontre la division des valeurs séparées par des virgules de la colonne « VAL » en deux nouvelles colonnes, « VAL1 » et « VAL2 », tout en conservant l'intégrité des données même avec des entrées nulles ou vides. La sortie montre clairement les valeurs séparées. Notez l'utilisation de ROWNUM et UNION ALL pour créer des exemples de données, une approche plus standard que l'exemple d'origine.

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal