Séparer la donnée d'une colonne en plusieurs colonne

Fermé
VincentS - 15 sept. 2021 à 14:29
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 - 15 sept. 2021 à 22:16
Bonjour Mesdames et Messieurs,

Voilà mon problème, dans une colonne nommée "MaData" ma donnée est de ce format "##;##;##;##;##" les ## étant des valeurs numériques.
Je souhaiterai à l'aide d'un requête SQL venir récupérer cette donnée et de la séparer pour l'afficher en plusieurs colonne. J'ai essayé différentes propositions mais rien de concluant.

Pour vous donner une meilleure explication voici un exemple:
En exécutant ce code,
Select 
 PARSENAME(REPLACE('0;10;56', ';', '.'), 1) AS FirstValue
,PARSENAME(REPLACE('0;10;56', ';', '.'), 2) AS SecondValue
,PARSENAME(REPLACE('0;10;56', ';', '.'), 3) AS ThirdValue


le résultat est = 56 | 10 | 0

Jusque la tout va bien. Or, dès que je modifie ma requête pour aller chercher "MaData" cela ne fonctionne plus. Ex:

SELECT TOP (1)
      [MaData] --DATA sous forme de "CSV"  exemple (1;2;3;4;5;6;7;8;9;10;11)
	  ,PARSENAME(REPLACE([MaData], ';', '.'), 1) AS FirstValue
	  ,PARSENAME(REPLACE([MaData], ';', '.'), 2) AS SecondValue
	  ,PARSENAME(REPLACE([MaData], ';', '.'), 2) AS ThirdValue
  FROM CopiloteTest.dbo.Info_Plc


Le résultat est = 1;2;3;4;5;6;7;8;9;10;11 | NULL | NULL | NULL
Et je souhaiterai avoir = 1;2;3;4;5;6;7;8;9;10;11 | 11| 10 | 9

J'ai également essayé de faire un "CAST" mais sans succès...
En espérant que vous avez pu comprendre mon problème et ayez une réponse.

Cordialement,

Configuration: Windows serveur
A voir également:

1 réponse

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
15 sept. 2021 à 22:16
Bonjour
Peut-être
SELECT TOP (1)
  [MaData]
  ,REVERSE(PARSENAME(REPLACE(REVERSE([MaData]), ';', '.'), 1)) AS FirstValue
  , REVERSE(PARSENAME(REPLACE(REVERSE([MaData]), ';', '.'), 2)) AS SecondValue
  , REVERSE(PARSENAME(REPLACE(REVERSE([MaData]), ';', '.'), 3)) AS ThirdValue
  FROM CopiloteTest.dbo.Info_Plc

0