1

私はこの構文を使用して取得し、エラーだ:更新SQL構文 - 連結で自身にフィールドをリセット - のSQLServer 2005

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

それは私のためにこれをやってとあまりにも幸せではありません。私は連結のための '+'が私の選択されたステートメントで動作することを知っています、それは正しい構文です。ここには何か他のものがあります...そしてカッコも取り除こうとしました。

例:

フィールド1 = 'チーズ' とフィールド2 = 'ConQueso'
なら、私の更新はフィールド1 = 'チーズ - ConQueso' へのフィールド1が= 'チーズ' すべてのレコードを設定する必要があり


EDIT:
両方のフィールドがテキストフィールドです

+2

field1とfield2のデータ型は何ですか?また、あなたは何を得ているのですか?私の推測では、互換性のないデータ型があり、それが失敗する理由ですが、私が正しいかどうかを知りたいのですが! – Eric

+2

再編集 - 次にvarchar(max)に切り替えることはできますか?それはそれを修正します... –

答えて

2

エラーが表示されない場合がありますが、データサイズの組み合わせがフィールド1を超過している可能性があります。

例えば、field1はVARCHAR(50)の場合とfield2はVARCHAR(50)であり、合計は、FIELD1の50文字を超えるあなた' - '、を含む最大103文字であってもよいです。

+0

良い考えですが、これはケースではありません....私は質問にエラーをコピーします – CheeseConQueso

+0

あなたは正しかった...ありがとうorbman ...長さを変更しなければならないフィールド1とうまくいけば、私はそれを簡単に取り除くことができます – CheeseConQueso

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 
+0

それは私のために働いているはずですが、orbmanは良い点を作った。フィールド1の長さをチェックしたことはありません。 – CheeseConQueso

関連する問題