server2008  执行
select * from  表名  where  id1 like '%%'and id2 like '%%'为啥没有记录被选中
而当执行select * from  表名  where  id1 like '%%'
或者执行select * from  表名  where  id2  like '%%'
时,全部记录都能选择

解决方案 »

  1.   


    --> 测试数据:[tbl]
    if object_id('[tbl]') is not null drop table [tbl]
    create table [tbl]([ID] int,[Code] int)
    insert [tbl]
    select 1,123 union all
    select 2,123 union all
    select 4,123 union all
    select 6,1234 union all
    select 7,1234--1
    select * from tbl where ltrim(Code) like '%%'
    /*
    ID Code
    1 123
    2 123
    4 123
    6 1234
    7 1234
    */
    --2
    select * from tbl where ltrim([ID]) like '%%'
    /*
    ID Code
    1 123
    2 123
    4 123
    6 1234
    7 1234
    */
    --3
    select * from tbl where 
    ltrim(Code) like '%%' and ltrim([ID]) like '%%'
    /*
    ID Code
    1 123
    2 123
    4 123
    6 1234
    7 1234
    */
    --本机测试(MSSQL2008 开发版)结果为全部都显示出来,跟你所说的偏差
      

  2.   

    你要得是同时满足你的两个条件?
    id1 like '%%'and id2 like '%%'
      

  3.   

    我在MSSQL2008R2测试,没有出现楼主的情况。楼主不如给出详细数据表结构和记录看看。
      

  4.   

    你的逻辑是需要同时满足那两个条件,而你分开写只是满足其中一个条件的况,实际相当于“or”而不是“and"
      

  5.   

    lz:基于你的问题的解答是:
    你的语句
    select * from 表名 where id1 like '%%' and id2 like '%%'
    从语句看你的条件是且的关系,也就是说必须同时满足2个条件。
    你可以这样呀(下面的分解法和你的语句是一个道理)
    先:select * into #a from 表名 where id1 like '%%'
    再:select * from #a where id2 like '%%'
    如果没有记录那就说明你的表中没有同时满足2个条件的。希望lz成功。
      

  6.   

    两个字段中有一个字段的记录为NULL