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

如何用SQL查询拆分CSV字段并关联对应PK生成新表

嘿,这事儿好办!既然你已经有了能拆分CSV字符串的函数,咱们只需要把原表的每一行和拆分后得到的多个值做关联就行,不同数据库的写法略有差异,我给你列几个常见的实现方式:

假设你的原表名为OriginalTable,列是PK(主键)和[Values](CSV字符串列),拆分函数名为SplitCSV,返回包含单个列Value的表

1. SQL Server 写法

用CROSS APPLY来关联原表和拆分函数的结果:

SELECT 
    ot.PK AS Id,
    sc.Value
FROM 
    OriginalTable ot
CROSS APPLY 
    SplitCSV(ot.[Values], ',') sc

CROSS APPLY会自动把原表的每一行,和拆分函数针对该行CSV字符串返回的所有行做匹配,完美生成你要的一对多关联结果。

2. PostgreSQL 写法

用LATERAL JOIN来实现关联(如果是自定义拆分函数):

SELECT 
    ot.pk AS id,
    sc.value
FROM 
    original_table ot
LATERAL JOIN 
    split_csv(ot.values, ',') sc(value)

如果不想用自定义函数,PostgreSQL内置的unnest+string_to_array也能直接搞定:

SELECT 
    ot.pk AS id,
    unnest(string_to_array(ot.values, ',')) AS value
FROM 
    original_table ot

3. MySQL 8.0+ 写法

用LATERAL JOIN关联自定义拆分函数:

SELECT 
    ot.PK AS Id,
    sf.Value
FROM 
    OriginalTable ot
JOIN LATERAL 
    SplitCSV(ot.`Values`, ',') sf

注意事项

  • 如果你的拆分函数返回的列名不是Value,记得把SQL里的sc.Value/sf.Value改成对应的列名
  • 因为Values是SQL关键字,所以引用这个列的时候要加方括号(SQL Server)、反引号(MySQL)或者双引号(PostgreSQL,需开启对应配置)来转义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:56:20