Mettre à jour la syntaxe sql - Réinitialiser un champ avec une concaténation - SQLServer 2005
-
06-07-2019 - |
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
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