sql修復資料中含有分號結尾的資料

2021-09-13 18:25:32 字數 1795 閱讀 5687

專案開發遇到資料存寫錯誤,導致資料中欄位內容,數字中含有分號結尾。如下圖:

現在要去去掉末尾的分號,查詢sql如下:

select substr(t.buy_reason, 1, length(t.buy_reason) - 1)

from tm_potential_customer t

where 1 = 1

and substr(t.buy_reason, length(t.buy_reason), 1) = ';'

and t.buy_reason is not null

and trim(t.buy_reason) <> '';

更新sql如下:

update tm_potential_customer m

set m.buy_reason=(select substr(t.buy_reason, 1, length(t.buy_reason) - 1)

from tm_potential_customer t

where 1 = 1

and substr(t.buy_reason, length(t.buy_reason), 1) = ';'

and t.buy_reason is not null

and trim(t.buy_reason) <> ''

and t.customer_no = m.customer_no

and t.entity_code = m.entity_code

)where substr(m.buy_reason, length(m.buy_reason), 1) = ';'

and m.buy_reason is not null

and trim(m.buy_reason) <> ''

;

效果如下圖:

注意:update語句一定要加上where條件,過濾需要更新的語句,不然容易把字段更新成null,我在開發測試中就遇到了這個問題,沒有判斷需要更新的條件,比如一定是最後分號結尾的字段才更新,如果沒有這個條件,sql執行多次就會把字段更新成null

錯誤sql如下:

update tm_potential_customer m

set m.buy_reason=(select substr(t.buy_reason, 1, length(t.buy_reason) - 1)

from tm_potential_customer t

where 1 = 1

and substr(t.buy_reason, length(t.buy_reason), 1) = ';'

and t.buy_reason is not null

and trim(t.buy_reason) <> ''

and t.customer_no = m.customer_no

and t.entity_code = m.entity_code

)where

--substr(m.buy_reason, length(m.buy_reason), 1) = ';'

m.buy_reason is not null

and trim(m.buy_reason) <> ''

;

SQL資料庫修復 資料庫置疑修復

sql資料庫修復的三大核心技術 1 磁碟陣列分析重組技術 2 資料庫恢復與修復技術 3 scsi盤物理故障開盤技術。至今已經成功恢復數百台伺服器的sql資料庫,使用者覆蓋全國。導致sql資料庫丟失的原因 1 各種原因 誤刪除 誤格式化 斷電等造成的ms sql server資料庫檔案破壞。2 ms ...

sql語句插入的資料中含有單引號怎麼辦?

sql語句插入的資料中含有單引號怎麼辦?access,sql server,asp sql中,insert into yourtable f1,f2 values 100,abc 字串資料是用單引號包在外面的,如果插入的資料中包含單 引號,就需要處理,你可以將單引號替換成兩個單引號,在sql 中連續...

SQL語句中含有乘號報錯的處理辦法

在ado中,我們需要在sql語句中使用乘法運算,可是新增 以後執行程式總是會出錯,這是因為 與sql中的 關鍵字重合了,所以編譯會出錯。解決辦法 將乘法運算放到sql語句外面,將結果放入乙個變數中,然後在sql語句中引用即可 int count this.aspnetpager1.currentpa...