如果要为这样的一个查询编写一个存储过程,查询的条件为2个参数,一个是XM ,一个是TM,这2个参数可能是空值(相当于用户没有选择这个条件),查询应是传入的条件的“与”的关系,这样如何来实现呢?比如说:我只输入一个TM ,查询出是所有符合TM条件的记录,我只输入一个XM,查询出是所有符合XM条件的记录,我要全部输入,就是符合XM和TM 条件的记录。
我写的过程如下:
CREATE Procedure serch_name
(
@v_XM nvarchar(255) =null
@v_TM nvarchar(255) =null)
as
begin
select top 20 * from yhxx where XM like '%' + @v_XM + '%' and TM like '%' + @v_TM + '%'
end
GO
我写的过程如下:
CREATE Procedure serch_name
(
@v_XM nvarchar(255) =null
@v_TM nvarchar(255) =null)
as
begin
select top 20 * from yhxx where XM like '%' + @v_XM + '%' and TM like '%' + @v_TM + '%'
end
GO
if (@v_XM is not null and @v_TM is null)
begin
语句
end
create proc serch_name
@v_XM nvarchar(255) =null,@v_TM nvarchar(255) =null
as
declare @SQL varchar(400)set @SQL = 'select top 20 * from yhxx where 1=1 'if @v_XM <> ''
begin
set @SQL=@SQL + 'and XM like ' + @v_XM + '% '
end
if @v_TM <> ''
begin
set @SQL=@SQL + 'and TM like ' + @v_TM + '%'
endexec(@SQL)注意空格注意单引号
create proc serch_name
@v_XM nvarchar(255) ,
@v_TM nvarchar(255)
as
begin declare @ifXm char(1)
declare @ifTm char(1)if @v_xm=''
set @ifxm=1
if @v_tm=''
set @ifvm=2 select * from yhxx where (xm like '%' + @v_xm +'%' or @ifxm=1)
and (tm like '%' + @v_tm +'%' or @iftm=1)