34,591
社区成员
发帖
与我相关
我的任务
分享
create Table StuInfo (Name varchar(10) ,Age varchar(10) , Gender varchar(10))
insert into StuInfo values('Lily' , '18' , 'Female')
insert into StuInfo values('David' , '19' , 'Male')
insert into StuInfo values('Asa' , '20' , 'Male')
insert into StuInfo values('Mike' , '' , 'Male')
go
declare @age as varchar(10)
set @age = '19'
select * from stuinfo where Gender = 'Male' and age like case when @age = '%' then age else '%'+replace(@age , '%' , '')+'%' end
/*
Name Age Gender
---------- ---------- ----------
David 19 Male
(所影响的行数为 1 行)
*/
set @age = '19%'
select * from stuinfo where Gender = 'Male' and age like case when @age = '%' then age else '%'+replace(@age , '%' , '')+'%' end
/*
Name Age Gender
---------- ---------- ----------
David 19 Male
(所影响的行数为 1 行)
*/
set @age = '9%'
select * from stuinfo where Gender = 'Male' and age like case when @age = '%' then age else '%'+replace(@age , '%' , '')+'%' end
/*
Name Age Gender
---------- ---------- ----------
David 19 Male
(所影响的行数为 1 行)
*/
set @age = ''
select * from stuinfo where Gender = 'Male' and age like case when @age = '%' then age else '%'+replace(@age , '%' , '')+'%' end
/*
Name Age Gender
---------- ---------- ----------
David 19 Male
Asa 20 Male
Mike Male
(所影响的行数为 3 行)
*/
set @age = '%'
select * from stuinfo where Gender = 'Male' and age like case when @age = '%' then age else '%'+replace(@age , '%' , '')+'%' end
/*
Name Age Gender
---------- ---------- ----------
David 19 Male
Asa 20 Male
Mike Male
(所影响的行数为 3 行)
*/
drop table stuinfo
create Table StuInfo (Name varchar(10) ,Age varchar(10) , Gender varchar(10))
insert into StuInfo values('Lily' , '18' , 'Female')
insert into StuInfo values('David' , '19' , 'Male')
insert into StuInfo values('Asa' , '20' , 'Male')
insert into StuInfo values('Mike' , '' , 'Male')
go
declare @age as varchar(10)
set @age = '19'
select * from stuinfo where Gender = 'Male' and age like case when @age = '%' then age else '%'+replace(@age , '%' , '')+'%' end
/*
Name Age Gender
---------- ---------- ----------
David 19 Male
(所影响的行数为 1 行)
*/
set @age = '19%'
select * from stuinfo where Gender = 'Male' and age like case when @age = '%' then age else '%'+replace(@age , '%' , '')+'%' end
/*
Name Age Gender
---------- ---------- ----------
David 19 Male
(所影响的行数为 1 行)
*/
set @age = '9%'
select * from stuinfo where Gender = 'Male' and age like case when @age = '%' then age else '%'+replace(@age , '%' , '')+'%' end
/*
Name Age Gender
---------- ---------- ----------
David 19 Male
(所影响的行数为 1 行)
*/
set @age = ''
select * from stuinfo where Gender = 'Male' and age like case when @age = '%' then age else '%'+replace(@age , '%' , '')+'%' end
/*
Name Age Gender
---------- ---------- ----------
David 19 Male
Asa 20 Male
Mike Male
(所影响的行数为 3 行)
*/
drop table stuinfo
------------------------------------
-- Author: happyflystone
-- Date:2008-12-15 22:47:00
------------------------------------
-- Test Data: STUINFO
IF OBJECT_ID('STUINFO') IS NOT NULL
DROP TABLE STUINFO
Go
CREATE TABLE STUINFO(Name NVARCHAR(5),Age INT,Gender NVARCHAR(6))
Go
INSERT INTO STUINFO
SELECT 'Lily',18,'Female' UNION ALL
SELECT 'David',19,'Male' UNION ALL
SELECT 'Asa',20,'Male' UNION ALL
SELECT 'Mike',null,'Male'
GO
--Start
SELECT
*
FROM
STUINFO
where
isnull(age,'') like '%' and Gender = 'Male'
--Result:
/*
Name Age Gender
----- ----------- ------
David 19 Male
Asa 20 Male
Mike NULL Male
(3 行受影响)
*/
--End