MySQL中修改字段值的字首或字尾

2022-09-11 08:06:14 字數 1347 閱讀 1116

因為專案整合需要,需要將幾個子專案整合成乙個專案發布,但之前開發過程中設定跳轉的url字首是以各個子專案字首命名的,現在需要將那些子專案的字首統一成乙個名字。因此需要修改儲存url資料表中的記錄的字首。

如下圖所示:需要將formurl欄位儲存的值中字首為rollsr值修改成字首為sw,其他值不變。

最常見的思路有兩種:修改時用子查詢限定修改的內容,並設定對應的值。(這種設定的值比較固定)

修改時用case when搜尋限定修改的內容和值。(設定的值當成變數處理,非常靈活)

針對這兒修改字首的情況,它修改後的值不是固定的,所以最佳做法是使用case when處理,這種可將設定的值當成變數的形式處理。

處理字串,首先想到的就是用concat(str,str1 ...)拼接字串,將字首 sw 放在最前面,然後拼接上 url 字首後面的部分就可以了。

那麼如何取 url 字首後面的那部分呢?

若處理的是字串字尾,可用類似的方式處理。

test_table為表名,formurl為需要修改的屬性名。

update test_table

set formurl = (

-- case when 搜尋函式

case

when (

-- 搜尋這兩種條件

(formurl like 'sr%')

or (formurl like 'roll%')

) then

-- 字串拼接

concat(

'sm',

-- 字串擷取:獲取字首後面部分字串

right (

formurl,

-- 計算出字首後面部分長度

(char_length(formurl) - locate('system', formurl) + 1)

)) else

-- 若沒有搜尋到對應的結果,則不改變值。注意:如果不加這個,若沒搜尋到對應的結果就會將該屬性值置為空

formurl

end);

case when的搜尋用法非常強大且靈活,在做資料修復sql時第乙個想到的就是它。

MySQL增加或修改字段 修改主鍵

1.在 中增加新的字段 alter table 表名 add 欄位名稱 字段型別 例子 alter table if customer order tab add message id decimal 12,0 not null 將新增的字段排在第一位 alter table if customer...

MySQL 修改字段型別或長度

mysql alter table 表名 modify column 欄位名 型別 例如資料庫中address表 city欄位是varchar 30 修改型別可以用 謹慎修改型別,可能會導致原有資料出錯 mysql alter table address modify column city cha...

MySQL 修改字段型別或長度

mysql alter table 表名 modify column 欄位名 型別 例如資料庫中address表 city欄位是varchar 30 修改型別可以用 謹慎修改型別,可能會導致原有資料出錯 mysql alter table address modify column city cha...