1

내가지고있어 오류이 구문을 사용하여 :업데이트 SQL 구문은 -를 연결 한 자체에 필드를 재설정 - SQLServer에 2005

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

그것은 나를 위해이 일을 너무 행복하지 않다. 연결 구문에 대한 '+'는 select 문에서 작동한다는 것을 알고 있으므로 올바른 구문입니다. 여기에 뭔가 다른 것이 있습니다 ... 그리고 괄호도 제거하려고했습니다.

예 :

경우 필드 1 = '치즈'와 FIELD2 = 'ConQueso'
다음 필드 1 = '치즈'= '치즈 - ConQueso'필드 1 곳을 모든 레코드를 설정해야 내 갱신


편집 :
두 필드 모두 텍스트 필드입니다.

+2

field1 및 field2의 데이터 유형은 무엇입니까? 또한 오류는 무엇입니까? 내 생각 엔 호환되지 않는 데이터 유형이 있기 때문에 실패하는 것입니다.하지만 제가 맞는지 알아 내고 싶습니다. – Eric

+2

다시 수정 - 대신 varchar (최대)로 전환 할 수 있습니까? 그건 고칠거야 ... –

답변

2

오류를 제공하지 않으면 알 수 없지만 조합 된 데이터 크기가 field1을 초과 할 수 있습니다.

예를 들면, field1은 VARCHAR (50) 인 경우와 field2은 VARCHAR (50)는, 결합 된 총 필드 1의 50자를 초과하여 ' - '을 포함하여 최대 103 자까지 사용할 수 있습니다.

+0

좋은 생각이지만,이 경우가 아니야 .... 질문에 오류를 복사합니다 – CheeseConQueso

+0

맞았어요 ... 고맙습니다 orbman ... 길이를 수정해야합니다. field1 그리고 잘하면 내가 충분히 쉽게 그걸로 도망 갈 수 – 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 좋은 지적했다. 나는 field1의 길이를 결코 확인하지 못했고 모든 것이 거기에 들어 가지 않을 것입니다 ... 감사합니다. – CheeseConQueso