首页 > 解决方案 > 如何在 SQL Server 表行中拆分数据

问题描述

我有一个事务表,其中包含一个transactionId具有类似 的值的列|H000021|B1|

我需要与具有类似值Category的列的表进行连接。CategoryIDH000021

除非数据相同,否则我无法应用联接。

所以我想拆分或删除其中包含的不必要的数据,TransctionId以便我可以加入两个表。

请帮助我解决问题。

标签: sql.netsql-servertsql

解决方案


仅使用代码创建计算列。

初始场景:

create table Transactions
(
 transactionId varchar(12) primary key,
 whatever varchar(100)
)

create table Category
(
  transactionId varchar(7) primary key,
  name varchar(100)
)

insert into Transactions 
select'|H000021|B1|', 'Anything'

insert into Category 
select 'H000021', 'A category'

添加计算列:

alter table Transactions add transactionId_code as substring(transactionid, 2, 7) persisted

使用新的计算列加入:

select *
from Transactions t
inner join Category c on t.transactionId_code = c.transactionId

获得一个简单的查询计划:

在此处输入图像描述


推荐阅读