2010-09-16 6 views
4

Je dois copier une ligne.
ligne Copié, je dois changer la valeur, cette valeur + « copie » Je l'ai fait sql..but ça fonctionne pas ..INSERT INTO SELECT, valeur de copie + 'chaîne'

INSERT INTO prizes_i18n (
    lang_id 
    , translation_name 
    , translation_desc 
    , name 
    , lang_path) 
SELECT prizes_s.lang_id 
     , prizes_s.translation_name + 'copy' 
     , prizes_s.translation_desc 
     , prizes_s.name 
     , prizes_s.lang_path 
FROM prizes_i18n prizes_s 
WHERE prizes_s.lang_id = 637; 

Sans + « copie » ses œuvres. Comme ça prizes_s.translation_name + 'copyy', mais ce n'est pas le travail.

+3

Quand vous dites "ça ne marche pas", que voulez-vous dire? Est-ce que ça donne une erreur? Est-ce qu'il échoue silencieusement? –

+0

Comment cela échoue-t-il? Vous obtenez une erreur ou vous n'obtenez pas la valeur que vous voulez dans le résultat – Murph

+0

double valeur incorrecte .. seulement accepté 'copie' - comme la chaîne ou le nom de la colonne, ensemble pour le combiner - ne fonctionne pas – Oyeme

Répondre

9

De this previous question vous utilisez MySQL? Si c'est le cas, utilisez concat pour la concaténation de chaîne.

SELECT 'foo' + 'bar' ... 

retours 0 dans MySQL qui expliqueraient l'erreur de vous voir. Les doubles sont

INSERT INTO prizes_i18n (lang_id, translation_name, translation_desc, 
          name, lang_path) 
SELECT prizes_s.lang_id, 
    concat(prizes_s.translation_name, 'copy'),  
    prizes_s.translation_desc, prizes_s.name, prizes_s.lang_path 
FROM prizes_i18n prizes_s WHERE prizes_s.lang_id = 637; 
+0

Vous êtes arrivé juste avant moi. Je pense que la plupart des saveurs de DBMS ont CONCAT() – APC

+0

Merci !!!!! Ça marche!! – Oyeme

1

conjecture au hasard ...

prizes_s.translation_name + ' Copy' est trop long pour translation_name et vous obtenez string or binary data would be truncated erreur?

Est-ce SQL Server aussi? Est-ce que le nom de la traduction est char ou varchar?

1

INSERT INTO prizes_i18n
(id_langue, translation_name, translation_desc, nom, lang_path) SELECT prizes_s.lang_id , concat (prizes_s.translation_name, 'copie') , prizes_s.translation_desc , prizes_s.name , prizes_s.lang_path
À partir de Prix WHERE prizes_s.lang_id = 637;

Aussi je pense que dans votre clause FROM la table prizes_i18n est inutile.

+0

Il n'y a qu'une seule table 'prizes_i18n'. Il est aliasé comme 'prizes_s' –

+0

oui vous avez raison! – Oyeme