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

如何替换表格DETAILS字段中CIF ID与数字组合为MONS ID对应值?

问题解答

需求完全可以实现,SQL或脚本方案均可行

一、SQL方案(主流数据库均可实现)

核心思路是利用正则替换函数匹配任意大小写的CIF ID+数字组合,替换为MONS ID+当前行的MONS_ID字段值。以下是主流数据库的实现示例:

1. PostgreSQL

使用REGEXP_REPLACE函数,通过(?i)开启大小写不敏感匹配:

SELECT
  ID,
  MONS_ID,
  REGEXP_REPLACE(DETAILS, '(?i)CIF ID\s*\d+', 'MONS ID ' || MONS_ID) AS UPDATED_DETAILS
FROM your_table;

2. MySQL 8.0+ / MariaDB

同样用REGEXP_REPLACE,通过最后一个参数'i'指定忽略大小写:

SELECT
  ID,
  MONS_ID,
  REGEXP_REPLACE(DETAILS, 'CIF ID[0-9]+', CONCAT('MONS ID ', MONS_ID), 1, 0, 'i') AS UPDATED_DETAILS
FROM your_table;

3. Oracle

使用REGEXP_REPLACE,通过'i'修饰符开启大小写不敏感:

SELECT
  ID,
  MONS_ID,
  REGEXP_REPLACE(DETAILS, 'CIF ID\d+', 'MONS ID ' || MONS_ID, 1, 0, 'i') AS UPDATED_DETAILS
FROM your_table;

二、脚本方案(适配老版本数据库或复杂场景)

如果你的数据库版本不支持正则替换,或者DETAILS字段格式异常复杂,可以用脚本批量处理:

Bash脚本示例(结合awk,适配CSV格式)

awk -F ',' 'BEGIN{OFS=","} {gsub(/[Cc][Ii][Ff] [Ii][Dd][0-9]+/, "MONS ID " $2, $3); print $1,$2,$3}' input.csv > output.csv

解释:用gsub匹配任意大小写的CIF ID+数字,替换为MONS ID+第二列(MONS_ID)的值。

Python脚本示例(更灵活,支持复杂格式)

import re

with open('input.csv', 'r') as f_in, open('output.csv', 'w') as f_out:
    header = f_in.readline()
    f_out.write(header)
    for line in f_in:
        parts = line.strip().split(',')
        id_col, mons_id, details = parts[0], parts[1], parts[2]
        # 匹配任意大小写的CIF ID+数字,支持中间有空格的情况
        updated_details = re.sub(r'(?i)CIF ID\s*\d+', f'MONS ID {mons_id}', details)
        f_out.write(f"{id_col},{mons_id},{updated_details}\n")

注意事项

  • 正则表达式中的\s*用于匹配CIF ID和数字之间可能存在的空格,确保覆盖所有格式;
  • 上述方案会一次性替换DETAILS字段中所有符合条件的CIF ID+数字组合;
  • 测试时建议先选取少量数据验证替换结果,避免误改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 05:23:25