1

この構文を使用するとエラーが発生します:

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

私のためにこれをするのはあまり幸せではありません。連結の「+」が選択ステートメントで機能することを知っているので、それは正しい構文です。ここには何か他のものがあります...そして、括弧も削除しようとしました。

例:

field1 = 'Cheese' および field2 = 'ConQueso' の
場合、私の更新では、field1 = 'Cheese' のすべてのレコードを field1 = 'Cheese - ConQueso' に設定する必要があります。


編集:
両方のフィールドはテキストフィールドです

4

2 に答える 2

2

エラーを提供しないとわかりにくいですが、結合されたデータ サイズが field1 を超えている可能性があります。

たとえば、field1is varchar(50) とfield2is varchar(50) の場合、合わせた合計は your を含めて最大 103 文字' - 'になり、field1 の 50 文字を超えます。

于 2009-06-19T14:53:57.753 に答える
2

(編集:データ型を明確にする更新の前の日付はtext; しかし、としては正常に動作しますvarchar(max)

ここでは正常に動作します (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]

出力:

field1               field2
-------------------- --------------------
somevalue - abc      abc
other                def
于 2009-06-19T14:55:03.100 に答える