大家好,请问我想查出表A中,如果字段M的值为'9'的时候,则判断n是否like '%篮球%',否则的话,是的话,选出,不是的话不选,请问这要怎样写?
如:
表A:
m n
1 篮球
2 足球
9 篮球
9 足球
查询结果为:
m n
1 篮球
2 足球
9 篮球
如:
表A:
m n
1 篮球
2 足球
9 篮球
9 足球
查询结果为:
m n
1 篮球
2 足球
9 篮球
-- Author : liangCK 梁爱兰
-- Comment: 小梁 爱 兰儿
-- Date : 2009-11-02 13:13:32
-------------------------------------
--> 生成测试数据: @tb
DECLARE @tb TABLE (m int,n varchar(4))
INSERT INTO @tb
SELECT 1,'篮球' UNION ALL
SELECT 2,'足球' UNION ALL
SELECT 9,'篮球' UNION ALL
SELECT 9,'足球'--SQL查询如下:SELECT * FROM @tb AS A
WHERE 1=CASE WHEN m=9 THEN
CASE WHEN n LIKE '%篮球%' THEN 1 ELSE 0 END
ELSE 1 END/*
m n
----------- ----
1 篮球
2 足球
9 篮球(3 行受影响)*/
union all
select * from A where m='9' and n like '%篮球%'
--> 测试数据: @tb
declare @tb table (m int,n varchar(4))
insert into @tb
select 1,'篮球' union all
select 2,'足球' union all
select 9,'篮球' union all
select 9,'足球'select * from @tb
where m=case when m=9 and n not like '%篮球%' then m+1 else m end m n
----------- ----
1 篮球
2 足球
9 篮球(3 行受影响)
-- Author : Luoyoumou
-- Comment: 三月红梨
-- Date : 2009-11-02 13:19:32
-------------------------------------
--> 生成测试数据: @tb
DECLARE @tb TABLE (m int,n varchar(4))
INSERT INTO @tb
SELECT 1,'篮球' UNION ALL
SELECT 2,'足球' UNION ALL
SELECT 9,'篮球' UNION ALL
SELECT 9,'足球'--SQL查询如下:SELECT * FROM @tb AS A
WHERE m<>9 or (m=9 and n='篮球');
select * into #tmp from (
select 1 as m , '篮球' as n union all
select 2 , '足球' union all
select 9 , '篮球' union all
select 9 , '足球') Aselect m,n
from #tmp
where (case when m=9 then (case when n ='篮球' then n else '' end ) else n end ) <> ''
-- Author : Luoyoumou
-- Comment: 三月红梨
-- Date : 2009-11-02 13:19:32
-------------------------------------
----我是来蹭分的!--> 生成测试数据: @tb
DECLARE @tb TABLE (m int,n varchar(4))
INSERT INTO @tb
SELECT 1,'篮球' UNION ALL
SELECT 2,'足球' UNION ALL
SELECT 9,'篮球' UNION ALL
SELECT 9,'足球'--SQL查询如下:SELECT * FROM @tb AS A
WHERE m<>9 or (m=9 and n like '%篮球%');