Maison > base de données > tutoriel mysql > Comment diviser les valeurs de colonne VARCHAR séparées par des virgules dans SQL ?

Comment diviser les valeurs de colonne VARCHAR séparées par des virgules dans SQL ?

DDD
Libérer: 2024-12-16 14:37:17
original
235 Les gens l'ont consulté

How to Split Comma-Separated VARCHAR Column Values in SQL?

Diviser les valeurs des colonnes VARCHAR en SQL

En SQL, le type de données VARCHAR stocke des chaînes de caractères de longueur variable. Lorsque vous traitez des colonnes VARCHAR, il peut être nécessaire de diviser les valeurs de colonne en plusieurs valeurs individuelles.

Supposons que vous ayez une instruction SQL SELECT comme celle-ci :

SELECT 
  AD_Ref_List.Value
FROM AD_Ref_List
WHERE AD_Ref_List.AD_Reference_ID= 1000448
Copier après la connexion

Cette instruction renvoie tous les valeurs de la colonne Value de la table AD_Ref_List où la colonne AD_Reference_ID est égale à 1000448. Le résultat peut ressembler à ceci :

Value
CO,VO

Dans ce résultat, la colonne Valeur contient une liste de valeurs séparées par des virgules. Pour filtrer davantage les résultats, vous souhaiterez peut-être diviser les valeurs en lignes individuelles, telles que :

Value
CO
VO

Une façon d'y parvenir est d'utiliser l'opérateur IN, comme ceci :

SELECT 
  AD_Ref_List.Value
FROM AD_Ref_List
WHERE AD_Ref_List.AD_Reference_ID= 1000448
AND AD_Ref_List.Value IN
  (SELECT xx_insert.XX_DocAction_Next
  FROM xx_insert
  WHERE xx_insert_id = 1000283
  )
;
Copier après la connexion

Cependant, cette requête peut ne renvoyer aucune ligne car Oracle traite la liste de valeurs comme une seule chaîne, et non comme des valeurs individuelles. Pour résoudre ce problème, vous pouvez utiliser la technique suivante :

SELECT r.Value
FROM   AD_Ref_List r
       INNER JOIN xx_insert x
       ON ( ',' || x.XX_DocAction_Next || ',' LIKE '%,' || r.value || ',%' )
WHERE  r.AD_Reference_ID = 1000448
AND    x.xx_insert_id    = 1000283;
Copier après la connexion

Cette requête utilise l'opérateur LIKE pour vérifier si la valeur de la table AD_Ref_List est une sous-chaîne de la liste de valeurs de la table xx_insert. Cela renverra le résultat souhaité, chaque valeur de la colonne Valeur apparaissant sur une ligne distincte.

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!

source:php.cn
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