Bonjour,
j'avais pos=E9 la question il y a quelque temps mais je=20
n'ai toujours pas trouv=E9 la solution.
Je voudrais en SQL qu'=E0 chaque interrogation de ma table=20
(sur chaque select) d=E9composer mon champ adresse en 3=20
champs distincts (ad1, ad2 et ad3) =E0 chaque retour =E0 la=20
ligne.
Je commence avec un truc comme =E7a mais je n'arrive pas =E0=20
continuer :
CASE charindex(CHAR(13)+CHAR(10) , Adr )
WHEN 0 THEN ''
ELSE LEFT( Adr , charindex(CHAR(13)+CHAR(10) ,=20
Adr ) - 1)
END AS Adr1
"Alain" a écrit dans le message de news: b49101c48917$3698c050$ Bonjour, j'avais posé la question il y a quelque temps mais je n'ai toujours pas trouvé la solution. Je voudrais en SQL qu'à chaque interrogation de ma table (sur chaque select) décomposer mon champ adresse en 3 champs distincts (ad1, ad2 et ad3) à chaque retour à la ligne. Je commence avec un truc comme ça mais je n'arrive pas à continuer : CASE charindex(CHAR(13)+CHAR(10) , Adr ) WHEN 0 THEN '' ELSE LEFT( Adr , charindex(CHAR(13)+CHAR(10) , Adr ) - 1) END AS Adr1
Si quelqu'un à une idée.
Merci
Copie-colle cela dans l'Analyseur de requête et exécute.
Si Ok implémente en adaptant.
Merci pour mon petit défi quotidien.
create table #MaTable
(
adresse varchar(8000)
)
INSERT INTO #MaTable (Adresse) VALUES ('1, rue de la Vallée' + CHAR(13) +
CHAR(10) + '2ième ligne' + CHaR(13) + CHaR(10) + 'ligne 3')
INSERT INTO #MaTable (Adresse) VALUES ('56, rue de la Tour' + CHAR(13) +
CHAR(10) + '2ième ligne' + CHaR(13) + CHaR(10) + 'ligne 3 et dernière.')
"Alain" <anonymous@discussions.microsoft.com> a écrit dans le message de
news: b49101c48917$3698c050$a501280a@phx.gbl...
Bonjour,
j'avais posé la question il y a quelque temps mais je
n'ai toujours pas trouvé la solution.
Je voudrais en SQL qu'à chaque interrogation de ma table
(sur chaque select) décomposer mon champ adresse en 3
champs distincts (ad1, ad2 et ad3) à chaque retour à la
ligne.
Je commence avec un truc comme ça mais je n'arrive pas à
continuer :
CASE charindex(CHAR(13)+CHAR(10) , Adr )
WHEN 0 THEN ''
ELSE LEFT( Adr , charindex(CHAR(13)+CHAR(10) ,
Adr ) - 1)
END AS Adr1
"Alain" a écrit dans le message de news: b49101c48917$3698c050$ Bonjour, j'avais posé la question il y a quelque temps mais je n'ai toujours pas trouvé la solution. Je voudrais en SQL qu'à chaque interrogation de ma table (sur chaque select) décomposer mon champ adresse en 3 champs distincts (ad1, ad2 et ad3) à chaque retour à la ligne. Je commence avec un truc comme ça mais je n'arrive pas à continuer : CASE charindex(CHAR(13)+CHAR(10) , Adr ) WHEN 0 THEN '' ELSE LEFT( Adr , charindex(CHAR(13)+CHAR(10) , Adr ) - 1) END AS Adr1
Si quelqu'un à une idée.
Merci
Fred BROUARD
il ya a mieux :
1) construire ta table avec 3 lignes d'adresse de type VARCHAR(38) normes La Poste de nom ADR1, ADR2, ADR3 2) ajouter à cette table une colonne de type CHAR(116) en fait 3 * 38 + 2 3) ajouter un trigger sur INSERT et UPDATE qui concatène le contenu des colonnes ADR1, ADR2, ADR3 avec un blanc de séparation et met le tout dans ADRESSE.
Résumé des opérations : en maj, lecture, visu tu as les colonnes ADR1, ADR2, ADR3 en recherche tu as la colonne ADRESSE. éventuellement tu peut l'indexer...
A +
Alain a écrit:
Bonjour, j'avais posé la question il y a quelque temps mais je n'ai toujours pas trouvé la solution. Je voudrais en SQL qu'à chaque interrogation de ma table (sur chaque select) décomposer mon champ adresse en 3 champs distincts (ad1, ad2 et ad3) à chaque retour à la ligne. Je commence avec un truc comme ça mais je n'arrive pas à continuer : CASE charindex(CHAR(13)+CHAR(10) , Adr ) WHEN 0 THEN '' ELSE LEFT( Adr , charindex(CHAR(13)+CHAR(10) , Adr ) - 1) END AS Adr1
Si quelqu'un à une idée.
Merci
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
il ya a mieux :
1) construire ta table avec 3 lignes d'adresse de type VARCHAR(38) normes La
Poste de nom ADR1, ADR2, ADR3
2) ajouter à cette table une colonne de type CHAR(116) en fait 3 * 38 + 2
3) ajouter un trigger sur INSERT et UPDATE qui concatène le contenu des colonnes
ADR1, ADR2, ADR3 avec un blanc de séparation et met le tout dans ADRESSE.
Résumé des opérations :
en maj, lecture, visu tu as les colonnes ADR1, ADR2, ADR3
en recherche tu as la colonne ADRESSE. éventuellement tu peut l'indexer...
A +
Alain a écrit:
Bonjour,
j'avais posé la question il y a quelque temps mais je
n'ai toujours pas trouvé la solution.
Je voudrais en SQL qu'à chaque interrogation de ma table
(sur chaque select) décomposer mon champ adresse en 3
champs distincts (ad1, ad2 et ad3) à chaque retour à la
ligne.
Je commence avec un truc comme ça mais je n'arrive pas à
continuer :
CASE charindex(CHAR(13)+CHAR(10) , Adr )
WHEN 0 THEN ''
ELSE LEFT( Adr , charindex(CHAR(13)+CHAR(10) ,
Adr ) - 1)
END AS Adr1
Si quelqu'un à une idée.
Merci
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
1) construire ta table avec 3 lignes d'adresse de type VARCHAR(38) normes La Poste de nom ADR1, ADR2, ADR3 2) ajouter à cette table une colonne de type CHAR(116) en fait 3 * 38 + 2 3) ajouter un trigger sur INSERT et UPDATE qui concatène le contenu des colonnes ADR1, ADR2, ADR3 avec un blanc de séparation et met le tout dans ADRESSE.
Résumé des opérations : en maj, lecture, visu tu as les colonnes ADR1, ADR2, ADR3 en recherche tu as la colonne ADRESSE. éventuellement tu peut l'indexer...
A +
Alain a écrit:
Bonjour, j'avais posé la question il y a quelque temps mais je n'ai toujours pas trouvé la solution. Je voudrais en SQL qu'à chaque interrogation de ma table (sur chaque select) décomposer mon champ adresse en 3 champs distincts (ad1, ad2 et ad3) à chaque retour à la ligne. Je commence avec un truc comme ça mais je n'arrive pas à continuer : CASE charindex(CHAR(13)+CHAR(10) , Adr ) WHEN 0 THEN '' ELSE LEFT( Adr , charindex(CHAR(13)+CHAR(10) , Adr ) - 1) END AS Adr1
Si quelqu'un à une idée.
Merci
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************