首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 使用 CONCAT 為欄位值追加字串的方法

     編輯:MySQL 資料庫相關知識

在 MySQL 中為特定欄位的現有值尾端追加字串,可使用 CONCAT() 函數搭配 UPDATE 語句完成。常見於為文章標題加註記、網址補齊參數、狀態碼擴充等場景。

基本語法

UPDATE `table_name`
SET `column_name` = CONCAT(`column_name`, 'append_string')
WHERE `condition`;

實務範例

-- 為 articleid=3487 且標題不以 'v' 結尾的文章,標題後加上 'MV'
UPDATE `文章表`
SET `title` = CONCAT(`title`, 'MV')
WHERE `articleid` = 3487
  AND `title` NOT LIKE '%v';

進階應用:條件式追加、分隔符號、避免重複

1. 加入分隔符號(如逗號、底線)

UPDATE `products`
SET `tags` = CONCAT(`tags`, ',', 'new_tag')
WHERE `id` = 100
  AND `tags` NOT LIKE '%,new_tag%'; -- 避免重複

2. 只有欄位非空時才追加(避免開頭出現分隔符)

UPDATE `users`
SET `nickname` = CONCAT(IFNULL(`nickname`, ''), IF(`nickname` IS NULL OR `nickname` = '', '', ' '), 'VIP')
WHERE `uid` = 888;

3. 使用 CONCAT_WS 自動處理分隔符與 NULL

CONCAT_WS(separator, str1, str2, ...) 會自動跳過 NULL 值,並用指定分隔符連接非空字串:

UPDATE `orders`
SET `memo` = CONCAT_WS('; ', `memo`, '客戶要求加急')
WHERE `order_id` = 555;

效能與鎖定提醒

  • UPDATE 會對符合條件的列加寫鎖(行鎖),大量更新建議分批次(LIMIT 1000 配合主鍵範圍)執行,減少鎖衝突。
  • 若欄位有索引,更新會導致索引維護成本;評估是否需在低峰期執行。
  • 執行前先用 SELECT 確認影響範圍:SELECT id, title FROM 文章表 WHERE articleid=3487 AND title NOT LIKE '%v';

相關函數速查

函數用途範例
CONCAT(str1,str2,...)單純連接,任一參數為 NULL 結果為 NULLCONCAT('a','b') → 'ab'
CONCAT_WS(sep,str1,str2,...)帶分隔符連接,自動略過 NULLCONCAT_WS(',','a',NULL,'c') → 'a,c'
INSERT(str,pos,len,newstr)在指定位置替換/插入INSERT('abcdef',3,0,'XY') → 'abXYcdef'

掌握 CONCAT 系列函數,能靈活處理欄位值的字串拼接需求,配合條件判斷避免髒資料產生。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved