sql - 连接包含逗号分隔值的表
问题描述
我有三个 Excel 表,我将它们推送到 SQL Server 中的表中,我需要加入这些表。但是,我相信 - 正如我已经尝试过的那样 - 正常加入是行不通的。我有编程背景,但对 SQL 了解不多。
Table1
ID Data_column reference_number
1 some data 1528,ss-456
2 some data 9523
3 some data ss-952
4 some data null
Table2
ID Data_column
ss-456 some data
ss-952 some data
Table3
ID Data_column
1528 some data
9523 some data
在下面的情况下,我将如何在两张桌子上加入这个原始数据。
Table1
ID Data_column reference_number
1 some data 1528,ss-456
解决方案
declare @t1 as table(
id int
,data_column varchar(20)
,reference_number varchar(20)
)
declare @t2 as table(
id varchar(20)
,data_column varchar(20)
)
declare @t3 as table(
id varchar(20)
,data_column varchar(20)
)
insert into @t1 values(1,'some data','1528,ss-456'),(2,'some data','9523'),(3,'some data','ss-952'),(4,'some data',null);
insert into @t2 values('ss-456','some data'),('ss-952','some data');
insert into @t3 values(1528,'some data'),(9523,'some data');
快速解决方案
select * from @t1 t1
left outer join @t2 t2 on t1.reference_number like '%'+t2.id or t1.reference_number like t2.id+'%'
left outer join @t3 t3 on t1.reference_number like '%'+t3.id or t1.reference_number like t3.id+'%'
结果(左连接):
id data_column reference_number id data_column id data_column
1 some data 1528,ss-456 ss-456 some data 1528 some data
2 some data 9523 NULL NULL 9523 some data
3 some data ss-952 ss-952 some data NULL NULL
4 some data NULL NULL NULL NULL NULL
您可以将“左外连接”更改为“内连接”以进行精确匹配。
推荐阅读
- c - “C”文件附加问题
- csv - Apache Nifi:使用更新记录处理器替换列中的值
- go - 在 go 工作区中安装 gota 包
- python - 合并熊猫数据框
- javascript - 如何使用 js DOM 生成带有按钮的文本框以动态关闭这两个文本框?
- c# - 通过http发送文件流不起作用
- javascript - 如何为 table.rows.cells 传递变量值以获取表格单元格值?
- python - 如何在 dask 数据帧上使用增量 PCA?
- tfs - TFS 2017 中的 JMeter CI/CD 流程
- angular - 用 GET 响应中的 json 填充 mat-table