2012-09-06 138 views
2

我試圖運行下面的語句,但預期它不工作。Sql Server的替換功能

這意味着取出子查詢值並將其從註釋字段中刪除(替換爲空字符串)。

我檢查了子查詢返回了我期望的正確值,但替換函數沒有像我期望的那樣工作。有沒有人有任何想法?

預先感謝您。

update contacts set comment = 
replace(comment, 
    (select 'Specialty: ' + a.categoryname 
    from contacts c 
    join categories a 
    on c.categorycode = a.categorycode 
    where contacts.contactid = c.contactid) 
, '') 
+0

是否有可能有在'Categories.CategoryCode'重複值? – Keith

+0

你收到了什麼錯誤?您確定可以同時獲取記錄集和「更新」嗎? – Kermit

回答

3

本應該做的我猜

update contacts 
set comment = replace(comment,'Speciality :' + categories.categoryname,'') 
from contacts inner join categories 
on  contacts.categorycode=categories.categorycode 
and contacts.contactid=categories.contactid 

in sqlfiddle

+0

爲什麼在範圍表中兩次觸點表? (上左側大小一次'=',一旦在右邊,在** **不相關子查詢) – wildplasser

+0

是更新如何加入工作:)我沒有在這裏使用別名聯繫人表 – Sankara

+0

感謝您的建議。它不需要最後一行,但我評論說,它仍然沒有像我期望的那樣工作。非常令人費解。 – Andrew

0

這是替換功能:

REPLACE (string_expression , string_pattern , string_replacement) 

你確定string_pattern匹配的string_expression的東西嗎?

這裏是一個link相同的信息

+0

你好,是的,我已經檢查子查詢返回了我期望的那樣。 – Andrew

+0

你能展示一個正在更新的評論的示例(數據)和從子查詢返回嗎? –