日期:2014-05-18 浏览次数:20722 次
declare @T table(ID int,bh1 varchar(5),bh2 smallint)
insert into @T select 1, 'aaa ',1
union all select 2, 'bbb ',101
declare @B table(ID int,bh varchar(10))
insert into @B select 1, 'aaa-001 '
union all select 2, 'bbb-101 '
--把你字段的空格去掉
select rtrim(bh1)+'-'+right(rtrim('000'+cast(bh2 as varchar(20))),3) from @t
select a.* from @t a,@b b where rtrim(bh1)+'-'+right(rtrim('000'+cast(bh2 as varchar(20))),3)=b.bh
------解决方案--------------------
[code=SQL]
declare @T table(ID int,bh1 varchar(5),bh2 smallint)
insert into @T select 1, 'aaa ',1
union all select 2, 'bbb ',101
declare @B table(ID int,bh varchar(10))
insert into @B select 1, 'aaa-001 '
union all select 2, 'bbb-101 '
select a.* from @t a,@b b where rtrim(bh1)+'-'+right(rtrim('000'+cast(bh2 as varchar(20))),3)=b.bh
------解决方案--------------------
--原始数据:@ta
declare @ta table(id int,bh1 varchar(3),bh2 smallint)
insert @ta
select 1,'aaa',1 union all
select 2,'bbb',101
--原始数据:@tb
declare @tb table(id int,bh varchar(7))
insert @tb
select 1,'aaa-001' union all
select 2,'bbb-101' union all
select 3,'ccc-002'
--1:@tb.bh两部分的长度都不固定
select * from @ta a,@tb b where a.bh1=left(b.bh,charindex('-',b.bh)-1) and a.bh2=right(b.bh,len(b.bh)-charindex('-',b.bh))
--2:@tb.bh的数字部分长度固定
select * from @ta a,@tb b where a.bh1+'-'+replicate('0',3-len(a.bh2))+ltrim(a.bh2)=b.bh
--3:@tb.bh两部分的长度固定
select * from @ta a,@tb b where a.bh1=left(b.bh,3) and a.bh2=right(b.bh,3)
/*
id bh1 bh2 id bh