2012-10-09 23 views
0

使用我目前運行此查詢:SQL更換過程中比較

UPDATE table1 
SET column1 = table2.columnA 
FROM table2 
WHERE column2 = table2.columnA 
AND column3 = table2.columnC 

是有重複的列,對不起。

當我穿過參考column2table2.columnA有機會獲得NULL因爲column2DOES NOT包含/,其中作爲table2.columnA可以包含/

我不想改變table2.columnA

數據

這是我的理解,我可以運行此查詢REPLACE的字符。

SELECT REPLACE ([table2.columnA],'/','-') 
FROM table2 

這是必要的,這不會對table2永久的變化,所以我想確保我得到這個權利或看看有沒有更好的辦法。

現在我想結合這兩個查詢,但不確定如何。

UPDATE table1 
SET column1 = table2.columnA 
FROM table2 
WHERE column2 = (SELECT REPLACE([table2.columnA],'/','-')table2.columnA) 
FROM table2 
AND column3 = table2.columnC 

感謝您的幫助!

+0

一般憑經驗:SQL語句永遠只能改變一(1)表。因此,'UPDATE TableX ...'只能改變TableX,無論在聲明中是什麼。同樣,'DELETE TableY ...'只能刪除TableY中的行,'INSERT TableZ ...'只能將行添加到TableZ中。而'SELECT'語句可以***從不改變表的內容,它只能返回數據。 – RBarryYoung

+0

好的,感謝您的信息! – weewa

回答

1

喜歡的東西

UPDATE table1 
SET column1 = table2.columnA 
FROM table1 
    inner join table2 
    on table1.column2 = REPLACE([table2.columnA],'/','-') 
    and table1.column3 = table2.columnC 
+0

我得到一個錯誤'味精8114,級別16,狀態5 錯誤'轉換'nvarchar'爲'float'所以我猜這是一個問題,我沒有想到 – weewa

+0

然後你的一個領域是一個不同的鍵入一個你正在比較它。 – podiluska

+0

,那會是因爲我將該語句添加到了錯誤的行中。讓我們再試試這個...... – weewa