質問

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

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

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

例:

field1 = 'Cheese'およびfield2 = 'ConQueso'の場合
更新すると、field1 = 'Cheese'からfield1 = 'Cheese-ConQueso'までのすべてのレコードが設定されます


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

役に立ちましたか?

解決

エラーを提供せずに伝えるのは難しいですが、おそらく結合データサイズがfield1を超えています。

たとえば、 field1 がvarchar(50)で field2 がvarchar(50)の場合、合計は 'を含めて最大103文字になります- '、field1の50文字を超えています。

他のヒント

(編集:データ型を明確にする更新前の日付は 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top