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

VincentS -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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