SQL Server迁移脚本:拆分逗号分隔值插入新表的疑问
解决SQL Server批量插入拆分后邮箱地址的问题
你可以直接使用 INSERT INTO ... SELECT 语法,将拆分后的查询结果直接批量插入目标表,不需要单独遍历。你的CROSS APPLY STRING_SPLIT已经正确生成了所有需要插入的行,只需要把查询语句整合到INSERT中即可:
INSERT INTO emailAddresses(emailAddress, companyId) SELECT TRIM(value) AS emailAddress, -- 处理邮箱前后可能存在的空格 Id AS companyId FROM Companies CROSS APPLY STRING_SPLIT(Email, ',') WHERE TRIM(value) <> '' -- 过滤掉空的邮箱(比如原字段末尾有逗号的情况)
关键说明:
INSERT INTO ... SELECT是SQL Server中批量插入查询结果的标准方式,会自动遍历SELECT返回的所有行并完成插入- 用
TRIM(value)能避免拆分后邮箱带前后空格的问题,保证数据格式整洁 - 添加
WHERE TRIM(value) <> ''可以过滤掉拆分后产生的空字符串(比如原Email字段是,a@test.com或者a@test.com,这类情况)
内容的提问来源于stack exchange,提问作者f_olivere
相关产品推荐
相关产品推荐

