sql

大家好,请问我想查出表A中,如果字段M的值为'9'的时候,则判断n是否like '%篮球%',否则的话,是的话,选出,不是的话不选,请问这要怎样写?
如:
表A:
m     n
1     篮球
2     足球
9     篮球
9     足球
查询结果为:
m      n
1     篮球
2     足球
9     篮球

解决方案 »

  1.   

    select * from A where m!='9' or (m='9' and n like '%篮球%')
      

  2.   

    -------------------------------------
    --  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 行受影响)*/
      

  3.   

    select * from A where m!='9'
    union all
    select * from A where m='9' and n like '%篮球%'
      

  4.   


    --> 测试数据: @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 行受影响)
      

  5.   

    -------------------------------------
    --  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='篮球');
      

  6.   


    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 )  <> '' 
      

  7.   

    -------------------------------------
    --  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 '%篮球%');