日期:2014-05-18  浏览次数:20629 次

存储过程中的like问题,困扰多时,高手解决!
我写的存储过程:
CREATE   PROCEDURE   jgTreeView1
@prID   varchar(50),
@stanClass   varchar(50)
  AS
create   table   #temp(id   char(50))
insert   #temp   values(@prID)

while   exists   (
select   flbh   from   standard_frame
where   flbh   not   in   (select   id   from   #temp)
and   parentID   in   (select   id   from   #temp)
)

insert   #temp
select   flbh   from   standard_frame
where   flbh   not   in   (select   id   from   #temp)
and   parentID   in   (select   id   from   #temp)

declare   @s   varchar(1000)
if(@stanClass!= 'null ')
begin
set   @s   =   'select   standard_Detail.*   from   standard_Detail,standard_frame   '   +   'where   (standard_Detail.class_number   =standard_frame.flbh   and   '   +   '
standard_frame.flbh   in   (select   id   from   #temp)   )   and   standard_Detail.standard_number   like     " '+@stanClass+ '% " '
end
else
begin
set   @s   =   'select   standard_Detail.*   from   standard_Detail,standard_frame   '   +   'where   standard_Detail.class_number   =standard_frame.flbh   and   '   +   '
standard_frame.flbh   in   (select   id   from   #temp) '
end

print(@s)

drop   table   #temp
GO
怎么查询不出数据来?!我怀疑是like语句处的写法有问题,高手帮忙,用户等着要呢!

------解决方案--------------------


CREATE PROCEDURE jgTreeView1
@prID varchar(50),
@stanClass varchar(50)
AS
create table #temp(id char(50))
insert #temp values(@prID)

while exists (
select flbh from standard_frame
where flbh not in (select id from #temp)
and parentID in (select id from #temp)
)

insert #temp
select flbh from standard_frame
where flbh not in (select id from #temp)
and parentID in (select id from #temp)

declare @s varchar(1000)
if(@stanClass!= 'null ')
begin
set @s = 'select standard_Detail.* from standard_Detail,standard_frame ' + 'where (standard_Detail.class_number =standard_frame.flbh and ' + '
standard_frame.flbh in (select id from #temp) ) and standard_Detail.standard_number like ' '% '+@stanClass+ '% ' ' '/*******************这里做了改动***********************/
end
else
begin
set @s = 'select standard_Detail.* from standard_Detail,standard_frame ' + 'where standard_Detail.class_number =standard_frame.flbh and ' + '
standard_frame.flbh in (select id from #temp) '
end

exec(@s)

drop table #temp
GO

------解决方案--------------------
我一般这样的
set @key = '% ' + @key + '% '
select * from tbname where title like @key


------解决方案--------------------
set @s = 'select standard_Detail.* from standard_Detail,standard_frame ' + 'where (standard_Detail.class_number =standard_frame.flbh and ' + 'standard_frame.flbh in (select id from #temp) ) and standard_Detail.standard_number like ' ' '+@stanClass+ '%