WHERE (InCode LIKE 'l%')--查以1开头的所有记录
WHERE InCode >='l' AND InCode<'m'--查介于1到m之间的记录(含1、2...9,a、b、c...l开头的记录)显然不一样!WHERE (InCode LIKE 'l%') 等价于 WHERE left(InCode,1)='l'

解决方案 »

  1.   

    --测试
    create table #t(
    a varchar(10))
    insert  into #t select 'ladfafd'
    insert  into #t select 'a123fafd'
    insert  into #t select 'l31adfafd'
    insert  into #t select 'lad31fafd'
    insert  into #t select '2adfafd'
    insert  into #t select 'madfafd'
    insert  into #t select 'l12adfafd'--select * from #t select * from #t where a like 'l%'
    select * from #t where a>='l' and a<'m'drop table #t
      

  2.   

    TO:wanyingsong(豌豆) 能给我解释一下你哪个测试结果怎么看么??呵呵,我是超级菜鸟,末笑话我哦
      

  3.   

    结果是一样的可能 like 效率会更高一点
      

  4.   

    结果是:a          
    ---------- 
    ladfafd
    l31adfafd
    lad31fafd
    l12adfafd(所影响的行数为 4 行)a          
    ---------- 
    ladfafd
    l31adfafd
    lad31fafd
    l12adfafd(所影响的行数为 4 行)
      

  5.   

    这个很容易理解啦:字符串排序,首先是按第一位排的
    那么
    l开头的,肯定就排序在m开头后面
    所以>='l' and <'m'
    的结果与 like 'l%'
    是一样的
      

  6.   

    WHERE (InCode LIKE 'l%')

    WHERE InCode >='l' AND InCode<'m'到底一不一样?
    在排序规则是大小写敏感的情况下应该是一样的,但是大小写不敏感的情况呢?
    有点怀疑,但是还未测试。
      

  7.   

    我本来是问那两个查询语句的效率的
    后来小二同志给我写了句
    SELECT *
    FROM M_Wdf_Person
    WHERE left(InCode,1)='1'我觉得不错,
    不知哪个效率更高一些??
      

  8.   

    TO:tx1icenhe(冒牌马可 V0.2) 
    我机子上装的是SQL2000个人版,查询结果好象都一样,大小写也一样
      

  9.   

    --原理上,这个效率应该比like高.
    >='l' and <'m'
      

  10.   

    sql server2000默认是不区分大小写的,where left(incode,1)=1应该说不是很好,因为如果incode有索引的话,这样写是不能利用上索引的,而LIKE 'l%'是可以利用上索引的
      

  11.   

    测试结果是不一样的:
    CREATE TABLE ttt1 (
    a [char] (10) COLLATE SQL_Latin1_General_Cp437_CS_AS NULL  --注意区分大小写
    )
    GOinsert ttt1
    select 'lllll' as a
    union all
    select 'lmmmm' as a
    union all
    select 'Lmmmm' as a
    union all
    select 'LLLLL' as aselect * from ttt1
    where a >= 'l' and a<'m'/*结果4条*/select * from ttt1
    where a like  'l%'/*结果2条*/
      

  12.   

    谢谢!!
    如果没有索引的话,应该是
    SELECT *
    FROM M_Wdf_Person
    WHERE InCode >='l'AND InCode<'m'好一些?
    是不是这个意思??
    因为M_Wdf_Person
    是需要频繁的修改的,我没建索引
      

  13.   

    --理论上,InCode字段上有索引的话,这个效率会高一些
    SELECT *
    FROM M_Wdf_Person
    WHERE InCode >='l'AND InCode<'m'
    --如果要防止排序规则的影响,可以强制指定排序规则不区分大小写:
    SELECT *
    FROM M_Wdf_Person
    WHERE InCode collate Chinese_PRC_CI_AS >='l'AND InCode collate Chinese_PRC_CI_AS <'m'
      

  14.   

    一定不同了,like 'l%'是该字段中以"l"开头的记录,而InCode >='l'AND InCode<'m'
    是从"l"到"m"的记录!
      

  15.   

    现在来讨论效率问题:
       不知道你看过执行计划没有,在有索引的情况下where a like 'l%'会自动转化成where a >= 'L' and a<'M'执行,也就是说效率是一样的, 在没有索引的情况下,没有做转换,个人认为,where a >= 'L' and a<'M'执行速度比like 快