You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以ID为动态拼接字符串更新表中my_string字段?

动态批量更新SQL字段的实现方案

核心思路是利用数据库的字符串拼接功能,将固定前缀 mystrin- 和每条记录的 id 字段动态拼接,同时通过WHERE条件过滤掉已经包含对应id的记录,避免重复更新。以下是主流数据库的具体实现:

MySQL/MariaDB

使用 CONCAT() 函数完成字符串拼接:

UPDATE my_items 
SET my_string = CONCAT('mystrin-', id)
WHERE my_string NOT LIKE CONCAT('%', id, '%');

PostgreSQL

可以直接用 || 拼接运算符,或者同样使用 CONCAT() 函数:

-- 方式1:使用||运算符
UPDATE my_items 
SET my_string = 'mystrin-' || id
WHERE my_string NOT LIKE '%' || id || '%';

-- 方式2:使用CONCAT函数
UPDATE my_items 
SET my_string = CONCAT('mystrin-', id)
WHERE my_string NOT LIKE CONCAT('%', id, '%');

SQL Server

如果 id 是数值类型,需要先转为字符串类型再拼接,可用 CAST() 函数或 CONCAT()(自动处理类型转换):

-- 方式1:使用+拼接(需手动转类型)
UPDATE my_items 
SET my_string = 'mystrin-' + CAST(id AS VARCHAR(20))
WHERE my_string NOT LIKE '%' + CAST(id AS VARCHAR(20)) + '%';

-- 方式2:使用CONCAT函数(自动类型转换)
UPDATE my_items 
SET my_string = CONCAT('mystrin-', id)
WHERE my_string NOT LIKE CONCAT('%', id, '%');

注意事项

  • 如果 id 本身是字符串类型,无需额外类型转换,直接拼接即可。
  • 测试时可以先运行 SELECT 语句验证筛选的记录是否正确,再执行 UPDATE,避免误操作:
    -- 示例(MySQL)
    SELECT id, my_string 
    FROM my_items 
    WHERE my_string NOT LIKE CONCAT('%', id, '%');
    

内容的提问来源于stack exchange,提问作者user1920187

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:17:05