1

我得到和錯誤使用此語法:更新SQL語法 - 重置場本身具有串聯 - SQLServer的2005

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

這不是太高興爲我做這些。我知道連接的'+'在我的select語句中起作用,所以這是正確的語法。這裏還有別的東西......我也嘗試刪除括號。

例子:

如果FIELD1 = '奶酪' 和Field2 = 'ConQueso'
那麼我的更新應該設置所有記錄字段1 = '奶酪' 到FIELD1 = '奶酪 - ConQueso'


編輯:
這兩個字段都是文本字段

+2

field1和field2的數據類型是什麼?另外,你得到的錯誤是什麼?我的猜測是你有不兼容的數據類型,這就是它失敗的原因,但我想從你那裏得知我是否正確! – Eric 2009-06-19 14:52:54

+2

重新編輯 - 然後你可以切換到varchar(max)嗎?這將修復它... – 2009-06-19 14:55:50

回答

2

很難說,沒有您提供錯誤,但可能組合的數據大小超過了field1。

例如,如果field1爲varchar(50)和field2爲varchar(50),將合併的總可能高達103個字符,包括你的' - ',這超過FIELD1的50個字符。

+0

好主意,但這不應該是這樣....我會將錯誤複製到問題 – CheeseConQueso 2009-06-19 14:55:12

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