模糊查询 存储过程
USE[sshd]GO/******Object:StoredProcedure[dbo].[select_dayword_tody]ScriptDate:05/17/2...
USE [sshd]
GO
/****** Object: StoredProcedure [dbo].[select_dayword_tody] Script Date: 05/17/2014 14:44:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[select_dayword_tody]
@time nchar(30),
@jsz nchar
as
select a.id,b.num,b.name ,a.title ,a.body ,a.time ,a.sffj ,a.jsz ,a.fjlj ,b.icourl from daywork a left join teacher b on a.fbrid =b.num where (time =@time and jsz like '%['+@jsz +']%')
主要问题是这个模糊查询语句似乎不太发挥作用。表中jsz类型为nchar(100)其存储内容例“动漫1101_工业电气1101”,现在此存储过程的目标就是想把所有jsz中包含“动漫1101”的都检索出来。我上头这样子写检索出来的不太对
exec select_dayword_tody @time='2014年5月17日',@jsz='动漫1101'
结果是只要包含“动漫”两个字的都检索出来了,请大神赐教 展开
GO
/****** Object: StoredProcedure [dbo].[select_dayword_tody] Script Date: 05/17/2014 14:44:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[select_dayword_tody]
@time nchar(30),
@jsz nchar
as
select a.id,b.num,b.name ,a.title ,a.body ,a.time ,a.sffj ,a.jsz ,a.fjlj ,b.icourl from daywork a left join teacher b on a.fbrid =b.num where (time =@time and jsz like '%['+@jsz +']%')
主要问题是这个模糊查询语句似乎不太发挥作用。表中jsz类型为nchar(100)其存储内容例“动漫1101_工业电气1101”,现在此存储过程的目标就是想把所有jsz中包含“动漫1101”的都检索出来。我上头这样子写检索出来的不太对
exec select_dayword_tody @time='2014年5月17日',@jsz='动漫1101'
结果是只要包含“动漫”两个字的都检索出来了,请大神赐教 展开
1个回答
展开全部
取消前面的那个% 就好了
这个看你怎么分析了, %张% 代表 查询所有包括张的 字段
张% 代表查询 以张开头的所有字段
%张 代表所有以张结尾的字段
你的语句我建议你写成
select emp_name from emps where( emp_name like @张% or emp_name %@张 )
这样就能取消很多了
另外如果你的是存储过程需要看看执行的结果是不是你要的.
这个看你怎么分析了, %张% 代表 查询所有包括张的 字段
张% 代表查询 以张开头的所有字段
%张 代表所有以张结尾的字段
你的语句我建议你写成
select emp_name from emps where( emp_name like @张% or emp_name %@张 )
这样就能取消很多了
另外如果你的是存储过程需要看看执行的结果是不是你要的.
追问
似乎不太行,若取消前面那个百分号,对应于“工业电气1101”就无法检索出。如果直接用sql语句查询。用‘2014年5月14日’取代@time,用‘动漫1101’取代@jsz检索出的结果是完全正确的,制成存储过程就不行。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询