Comment convertir une chaîne string en valuers independants?

Le
Don Juan
Bonjour

Je travail avec SQL Servr 2005.
J'ai un champ nomé Data avec des valeurs separés par de virgules comme cela:

Data
"Charles, Type B, Taille 34, M"

J'aimerais obtenir cela:
Data
Charles
Type B
Taille 34
M

Merci beaucoup d'avance de votre aide!
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
EmanuelL
Le #20445951
Bonjour Don Juan,

Pas testé, peut-être, à vérifier :
Line feed CHAR(10)
Carriage return CHAR(13)

@MaData = "Charles" + CHAR(10)+CHAR(13) + "Type B" + CHAR(10)+CHAR(13)
+ "Taille 34" + CHAR(10)+CHAR(13) + "M"

INSERT INTO MaTable (Data) VALUES (@MaData)
A+ ;-)

Dans son message précédent, Don Juan a écrit :
Bonjour

Je travail avec SQL Servr 2005.
J'ai un champ nomé Data avec des valeurs separés par de virgules comme cela:

Data
"Charles, Type B, Taille 34, M"

J'aimerais obtenir cela:
Data
Charles
Type B
Taille 34
M

Merci beaucoup d'avance de votre aide!



--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
MaximeG
Le #20448681
Salut Don Juan,

Peut être que cet article t'aidera :

http://www.developpez.net/forums/d442107/bases-donnees/oracle/sql/decouper-chaines-caracteres-suivant-separateur/

Maxime,

Don Juan a écrit :
Bonjour

Je travail avec SQL Servr 2005.
J'ai un champ nomé Data avec des valeurs separés par de virgules comme
cela:

Data
"Charles, Type B, Taille 34, M"

J'aimerais obtenir cela:
Data
Charles
Type B
Taille 34
M

Merci beaucoup d'avance de votre aide!


Med Bouchenafa
Le #20448921
SELECT REPLACE('Charles, Type B, Taille 34, M',',', CHAR(13))

Bien cordialement
Med Bouchenafa

"Don Juan" news:
Bonjour

Je travail avec SQL Servr 2005.
J'ai un champ nomé Data avec des valeurs separés par de virgules comme
cela:

Data
"Charles, Type B, Taille 34, M"

J'aimerais obtenir cela:
Data
Charles
Type B
Taille 34
M

Merci beaucoup d'avance de votre aide!


bruno reiter
Le #20455201
peut etre ça :

USE tempdb
go

CREATE TABLE Chaine (ID int, ListChaine varchar(50) not null);
GO
INSERT INTO Chaine VALUES (1,'a,bb,ccc,dddd,eeeee');
INSERT INTO Chaine VALUES (2,'ff,ggg');
INSERT INTO Chaine VALUES (3,'hhh,ii,j');
INSERT INTO Chaine VALUES (4,'vvvv,www,xx,yyy,zzz');

GO


CREATE FUNCTION dbo.ufn_ListeChamp (@v varchar(100),@s char(1))
RETURNS @t TABLE
(
Champ varchar(50) NOT NULL
)
--Returns a result set that lists all the employees who report to the
--specific employee directly or indirectly.*/
AS
BEGIN
declare @i int = 1
while 1=1
begin
IF CHARINDEX(@s,@v) = 0
begin
insert @t
select @v
break
end
insert @t
select substring(@v,1,CHARINDEX(@s,@v)-1)
set @v = substring(@v,CHARINDEX(@s,@v)+ 1, len(@v))
end

RETURN
END;
GO

declare @v char(50) = 'a,bb,ccc,dddd,eeeee'
declare @s char(1) = ','
SELECT * from dbo.ufn_ListeChamp (@v ,@s )

declare @s char(1) = ','

SELECT ID, f.*
FROM Chaine
CROSS APPLY dbo.ufn_ListeChamp (ListChaine ,@s ) as f



--BR




"Don Juan" news:
Bonjour

Je travail avec SQL Servr 2005.
J'ai un champ nomé Data avec des valeurs separés par de virgules comme
cela:

Data
"Charles, Type B, Taille 34, M"

J'aimerais obtenir cela:
Data
Charles
Type B
Taille 34
M

Merci beaucoup d'avance de votre aide!


Fred BROUARD
Le #20464341
Voici une fonction générique qui fait ce travail et retourne une table :
http://blog.developpez.com/sqlpro/p7509/langage-sql-norme/fonction-de-decoupage-a-cesure-multiple/

A +

Don Juan a écrit :
Bonjour

Je travail avec SQL Servr 2005.
J'ai un champ nomé Data avec des valeurs separés par de virgules comme
cela:

Data
"Charles, Type B, Taille 34, M"

J'aimerais obtenir cela:
Data
Charles
Type B
Taille 34
M

Merci beaucoup d'avance de votre aide!




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************
Publicité
Poster une réponse
Anonyme