我先说下思路,等下可以详细讲
第一种方法你可以用一个自定义的分隔函数(表值函数)去得到001,002,003的三行记录
方法二:你可以逆向处理,如
select * from B
where (select top 1 A.U_NO+',' from A) like B.U_NO+','
加','是为了不会匹配错误
附上一个字符串分隔函数:
create function Split(@STR varchar(max),@Separator varchar(1000))
RETURNS @T TABLE(ID varchar(1000))
begin
if(len(@Separator)=0)
set @Separator=','
DECLARE @TName VARCHAR(1000)
SELECT @STR=RTRIM(@STR)+@Separator
WHILE CHARINDEX(@Separator,@STR)>0
BEGIN
SELECT @TName=LEFT(@STR,CHARINDEX(@Separator,@STR)-1)
SELECT @STR=STUFF(@STR,1,CHARINDEX(@Separator,@STR),'')
insert into @T(ID)values(@TName)
END
RETURN
end
go
select * from b where u_no in(select u_no from a )
join