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

PostgreSQL中如何将不含指定子串的列数据迁移至另一列

PostgreSQL 数据迁移问题解决

你的问题出在SQL语句里的中文单引号,PostgreSQL无法识别中文引号包裹的模式串,导致WHERE条件实际不生效,所以所有行都执行了更新操作。

修正后的语句如下:

UPDATE your_table_name
SET col2 = col1, col1 = NULL
WHERE col1 IS NOT NULL 
  AND LOWER(col1) NOT LIKE '%substring%';

或者可以用PostgreSQL特有的ILIKE操作符,它支持不区分大小写的匹配,写法更简洁:

UPDATE your_table_name
SET col2 = col1, col1 = NULL
WHERE col1 IS NOT NULL 
  AND col1 NOT ILIKE '%substring%';

关键说明:

  • 替换your_table_name为你实际的表名
  • 必须使用英文单引号包裹模式串%substring%,这是SQL语法的强制要求
  • 添加col1 IS NOT NULL可以避免对col1本身为null的行执行无意义的更新,提升执行效率
  • ILIKE和LOWER(col1) LIKE效果完全一致,但代码更简洁直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:22:03