Posez votre question Signaler

Concatener 3 champs en 1 en SQL

DarkShadow2000 10Messages postés 23 novembre 2007Date d'inscription - Dernière réponse le 30 juil. 2010 à 16:19
Bonjour,
voila mon probleme
dans une base de données SQL
j'ai une table1 dans laquelle j'ai trois champs :
C2#1 char(255),
C2#2 char(1),
C2#3 char(1)
et je voudrais dans une table1bis avoir un seul champ C2 char(257)
Lire la suite 

Concatener 3 champs en 1 en SQL »

16 réponses
Réponse
+4
moins plus
c2#3 ??? tu crois que c'est permis comme nom de variable ?
Ajouter un commentaire
Réponse
+0
moins plus
En sQL Server :
SELECT C1 + C2 + C3
Ajouter un commentaire
Réponse
+0
moins plus
En fait, je voudrais plus un truc du genre :

UPDATE table1bis SET c2 = (SELECT (c2#1+c2#2+c2#3) from table1)

mais qui fonctionne!
Ajouter un commentaire
Réponse
+0
moins plus
je sais qu'il faut eviter les caracteres speciaux
mais en l'occurence il s'agit de nom de colonne qui existe.

enfin, je suis peut etre sur la voie, par le biais d'un curseur, mais la concatenation pose
quelques problemes avec les champs de type char.
Ajouter un commentaire
Réponse
+0
moins plus
Normalement une concat est une opération vraiement de base. mais c'est quel bdd ? peut tu faire

SELECT ([c2#1] + [c2#2] + [c2#3]) from table1

ou bien quel est le pb avec la concat ?
Ajouter un commentaire
Réponse
+0
moins plus
en fait j'ai fait comme ca.
Ca marche, juste un tout petit probleme le dernier enregistrements est copié deux fois!

CREATE proc migration
as

declare @var1 char(255)
declare @var2 char(1)
declare @var3 char(1)
declare @var varchar(257)
declare @varc1 varchar(2)
declare @varc3 int

set nocount on

declare curs1 cursor
for select c1,c2#1,c2#2,c2#3,c3
from table1

open curs1

fetch curs1
into @varc1, @var1, @var2, @var3, @varc3

select @var = convert(varchar(255),@var1) + convert(varchar(1),@var2) + convert(varchar(1),@var3)

insert into table1bis(c1,c2,c3)
values (@varc1, @var, @varc3)

while @@fetch_status = 0
begin
fetch curs1
into @varc1, @var1, @var2, @var3, @varc3

select @var = @var1 + @var2 + @var3
print @var
insert into table1bis(c1,c2,c3)
values (@varc1, @var, @varc3)
end

close curs1

deallocate curs1

set nocount on
GO
Ajouter un commentaire
Réponse
+0
moins plus
Ca m'a fait rire :

declare @var1 char(255)
declare @var2 char(1)
declare @var3 char(1)
select @var = convert(varchar(255),@var1) + convert(varchar(1),@var2) + convert(varchar(1),@var3)

Pourquoi tu n'utilises pas toute de suite le bon type ???

Et puis : varchar(1) quelle est la différence par rapport à char(1) ???

Et puis : @varc3 j'espère que ces noms ont été choisi pour obfusquer le code et en réalité tu utilises des choses lisibles. :)

fetch curs1 into @varc1, @var1, @var2, @var3, @varc3
...
while @@fetch_status = 0
begin

select @var = @var1 + @var2 + @var3
print @var
insert into table1bis(c1,c2,c3)
values (@varc1, @var, @varc3)
fetch curs1 into @varc1, @var1, @var2, @var3, @varc3
end
Ajouter un commentaire
Réponse
+0
moins plus
bon, c'est vrai j'avoue je me suis pas trop foulé pour faire ca.
autant sur les noms des variables, que sur la construction de la
procedure.
en tout cas j'ai reussi a faire marrer quelqu'un avec du SQL, c'est deja pas mal.
et puis comme en ce moment je suis sur AS400, me suis laché un peu au niveau rigueur.
Ajouter un commentaire
Réponse
+0
moins plus
lol

sinon la boucle ça marche ?
Ajouter un commentaire
Réponse
+0
moins plus
ca oui.
le transact m'a fait douté, lorsque je verifier avec un select, il ne m'afficher pas le caractere 257 en colonne 2.
alors que dans la table tout etait bien present.
Ajouter un commentaire
Réponse
+0
moins plus
hmmm, attention tu declare @var1 comme char(255) et après tu mets ça dans un varchar(257). Si c2#1 ne contient pas 255 caractères un TRIM est applique lors de la conversion en varchar et donc les positions ne sont plus les mêmes. sinon tu dois rester avec un char(257).
Ajouter un commentaire
Réponse
+0
moins plus
exact, ceci dit, j'avais la trame principale a realiser pour un pote, qui se chargera maintnant de fignoler le travail.

Pour parler d'autre chose, connaitrais-tu par hasard, un bon simulateur d'AS400?

je ne devrais pas le dire, mais j'aimerais bien en faire un peu a la maison (je dois etre mazo !).
Ajouter un commentaire
Réponse
+0
moins plus
là je dois demander à qqun. Mais ça va être du style VMWare je crains. bonne idée d'ailleurs. ils utilisent un langage de prog aussi. semble être la peine de l'apprendre. j'ai entendu qu'aux USA on peut faire de l'ordre de $150/heure, oufdi.
Ajouter un commentaire
Réponse
+0
moins plus
Alors, des nouvelles ?
Ajouter un commentaire
Réponse
+0
moins plus
oups, j'ai oublié. ce qu'ici au travail je ne connais personne c'est à la maison que je dois demander.
Ajouter un commentaire
Réponse
+0
moins plus
Salut j'ai un petit problème. je veux créer une table en multi-langue. J'ai plusieur champ
ElementFr ElementEn ElementEsp ......

Par une procédure, je veux sélectionner l'élément en fonction de la langue sélectionner donc j'ai une variable @Langue comme paramêtre d'entrée de ma procédure.
@Langue = Fr ou En ou Esp

Ma requete:

SELECT Element + @Langue FROM Table ......

Le + dans cette requete ne marche pas. j'aimerais concaténé la variable Langue pour pouvoir changer de champ en fonction du paramètre d'entrée.

Avez vous des solution
Ajouter un commentaire
Ce document intitulé « concatener 3 champs en 1 en SQL » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?