Question

Je reçois une erreur en utilisant cette syntaxe:

update table set field1 = (field1+' - '+field2) where field1 = 'somevalue'

Ce n’est pas très heureux de faire cela pour moi. Je sais que le '+' pour la concaténation fonctionne dans mes instructions select, c'est donc la bonne syntaxe. Il y a autre chose en jeu ici ... et j'ai aussi essayé de supprimer la parenthèse.

Exemple:

if field1 = 'Cheese' et field2 = 'ConQueso'
ma mise à jour doit définir tous les enregistrements où field1 = 'Cheese' à field1 = 'Fromage - ConQueso'


MODIFIER:
Les deux champs sont des champs de texte

Était-ce utile?

La solution

Difficile à dire sans que vous ayez fourni l'erreur, mais peut-être que la taille des données combinées dépasse le champ1.

Par exemple, si champ1 est varchar (50) et que champ2 est varchar (50), le total combiné peut aller jusqu'à 103 caractères, y compris votre '- ', qui dépasse les 50 caractères du champ1.

Autres conseils

(edit: avant la mise à jour, le type de données clarifiant est texte ; mais fonctionne correctement en tant que varchar (max) )

Fonctionne bien ici (SQL2005):

create table [table] (
   field1 varchar(max) not null,
   field2 varchar(max) not null)
insert [table] values ('somevalue','abc')
insert [table] values ('other','def')
update [table] set field1 = (field1+' - '+field2) where field1 = 'somevalue'
select * from [table]

sorties:

field1               field2
-------------------- --------------------
somevalue - abc      abc
other                def
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top