请教一个数据过滤的问题,请指教.
表tb1有列field1,有如下数据:
field1
101-123-5
101-123
101-200
101-200-1-100
101-200-2
101-300
101-300-1
101-400-1-100-B
我想取出如下数据:
field1
101-123
101-200
101-300
101-400-1-100-B
即,相同代码中取最短的一个
请问有什么好的方法吗?想了好久了,谢谢各位朋友!
[解决办法]
declare @t table(code varchar(30))
insert into @t select '101-123-5 '
insert into @t select '101-123 '
insert into @t select '101-200 '
insert into @t select '101-200-1-100 '
insert into @t select '101-200-2 '
insert into @t select '101-300 '
insert into @t select '101-300-1 '
insert into @t select '101-400-1-100-B '
select
t.*
from
@t t
where
not exists(select 1 from @t where t.code like code+ '% ' and len(code) <len(t.code))
[解决办法]
Select * From tb1 A
Where Not Exists (Select * From tb1 Where A.field1 Like '% ' + field1 + '% ' And A.field1 != field1)
[解决办法]
declare @t table(code varchar(30))
insert into @t select '101-123-5 '
insert into @t select '101-123 '
insert into @t select '101-200 '
insert into @t select '101-200-1-100 '
insert into @t select '101-200-2 '
insert into @t select '101-300 '
insert into @t select '101-300-1 '
insert into @t select '101-400-1-100-B '
select
t.*
from
@t t
where
not exists(select 1 from @t where t.code like code+ '% ' and code <t.code)