各位高手大大您好
小弟目前正在學習MSSQL的設計與管理,日前遇到了一個小問題,問題如下
這有兩個table都是地址資料,但是其中一個FittingAdd的地址欄位卻是"台北縣XX市",
現在長官要求我把舊的住址將它修改為"新北市XX區",和圖中的cusAddress欄位一樣,
長官只指提醒我一句話,是因為邏輯出了問題才導致FittingAdd沒更新,
小弟腦鈍....,小弟該如何解決這個問題??
麻煩各位不吝嗇的教導小弟,小弟必定虛心受教,
謝謝。
<pre class="c" name="code">UPDATE fittingadd
SET fittingadd = '新北市' + RIGHT(fittingadd, LEN(fittingadd) - 3)
WHERE LEFT(fittingadd, 3) = '台北縣'
請你務必先備份再執行上述指令。
程式邏輯?可能是指程式中沒有連帶UPDATE fittingadd欄位內容.
導致custadd更新了,沒更新到fittingadd.
因為不是您的長官肚裏的迴蟲,只能這樣猜測了。
antijava提到:
後面的板橋「區」和淡水「區」沒改到
再加一行指令...
<pre class="c" name="code">UPDATE fittingadd
SET fittingadd = LEFT(fittingadd, 5) + '區' + RIGHT(fittingadd, LEN(fittingadd) - 6)
WHERE LEFT(fittingadd, 3) = '新北市'
同學們要會舉一反亖吶~~
但,這是硬改的方法,基本上我是建議用幸運大叔的對照表的方法。
我再想想你PO問者連基本的SQL都還不熟練,要求對照表根本強人所難。
只好....直接一點。
謝謝你的回答,對於初學者的我,這真的是一個淺顯易懂的答案!!謝謝
跟朱市長商量一下,改回台北縣就好了
<pre class="c" name="code">
Update Table XXX
SET FittingAdd = cusAddress
P.S 使用前, 請在測試環境中進行, 確認後再套用, 謝謝~
這樣跟用一個欄位有何不同?
乾脆砍掉算了.
發問的人,也沒講清楚,到底是要怎樣作啊.
真是亂七八糟的設計與邏輯,你們到底是要把一個欄位改成跟另一個欄位一樣.還是兩個欄位裡面資料不同,但是要把 台北縣 變成 新北市,
板橋市 改成 板橋區 .
首先感謝二位大大的回答,我想我的敘述問題的方法有錯XD很抱歉沒講清楚!!
我把問題在釐清一下,如下
現在有兩個資料表分別為"客戶住址"與"安裝住址",
我必須把安裝住址(fittingadd)的格式修改成客戶住址(cusaddress),
例如:只要住址是"台北縣XX市"都要修改成"新北市XX區",
但是我不可能一筆一筆修改,因為select出來有6千多筆......,
加上長官有提示我說是關於"邏輯"的問題,所以我才發問想問問在這的資深大大們,
我長官的所說的"邏輯"到底是甚麼意思???該用甚麼方法修改呢?
謝謝!!
unclelucky提到:
弄個台北縣改制之後的新北市的對照表,
然後根據那Table去update就好啦.
我也推這個根本解決辦法!
例如:
CREATE TABLE #CITYMAP (
CITY_OLD VARCHAR(20),
CITY_NEW VARCHAR(20)
);
INSERT INTO #CITYMAP ('台北縣板橋市','新北市板橋區');
INSERT INTO #CITYMAP ('台北縣中和市','新北市中和區');
UPDATE XXX SET FITTINGADD = B.CITY_NEW + SUBSTRING(CUSADDRESS,7,LEN(CUSADDRESS)-6)
FROM XXX AS A INNER JOIN #CITYMAP AS B ON SUBSTRING(CUSADDRESS,1,6) = CITY_OLD
這樣就可以更新了~~
Update Target_Table
Set FittingAdd = REPLACE(FittingAdd, '市' , '區')
Where FittingAdd Like '台北縣'
Update Target_Table
Set FittingAdd = REPLACE(FittingAdd, '鎮' , '區')
Where FittingAdd Like '台北縣'
Update Target_Table
Set FittingAdd = REPLACE(FittingAdd, '鄉' , '區')
Where FittingAdd Like '台北縣'
Update Target_Table
Set FittingAdd = REPLACE(FittingAdd, '台北縣' , '新北市')
Where FittingAdd Like '台北縣'
-- 完成