SQL構文の更新-連結を使用してフィールドをそれ自体にリセットする-SQLServer 2005
-
06-07-2019 - |
質問
次の構文を使用するとエラーが発生します:
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
所属していません StackOverflow