读书人

存储过程中的like有关问题困扰多时

发布时间: 2012-02-25 10:01:49 作者: rapoo

存储过程中的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+ '% ' ' '



[解决办法]
like 一般这么写吧 like '% '+@key+ '% '

读书人网 >SQL Server

热点推荐