语句没错,看你比较什么数据类型了,如果no,start,end 都是数字,应该还是比较得出的。
也可以严格一点,换字段类型。

解决方案 »

  1.   

    start,end好象是关键词
    这可能会导致错误
      

  2.   

    因为start和end长度可变,而且只要比较前面几位就可以了,所以我把它们定为varchar类型。另外关键字是Dist,不是start,end。
    有劳各位了:)
      

  3.   

        按照SQL92的Entry Level级的要求,如果no是数值类型,则DBMS会在后台自动将start和end转换成数值并进行比较,SQL Server 7支持SQL92入门级,应该可以。如果no是字符类型,语句并没有错,但结果就不一定了对了,因为字符串得比较采用另外的规则(比如'2'〉'10'),这时候先用Convert进行转换。
      

  4.   

    哦,no也是字符串类型的。你是说,如果no='13910000000'而start='1390000',end='1392000',结果会出错么?
      

  5.   

    我用Vc 的SQLExecDirect函数执行,果然出错:(
    返回代码为-1。
    请教各位大虾如何处理比较好?
      

  6.   

    什么函数,是Sql语句里面的么?(孤陋寡闻,不好意思:)
      

  7.   

    substring(字符串,开始位置,截取长度)
      

  8.   

    应该是
    select Dist from tb_test
    where no >= :start and no <=:end;
    你的start和end 是参数吧
      

  9.   

    也是字段名啊。对了,vc好像没又substring,java里面才有吧?
      

  10.   

    这是sqlserver的函数,写在sql语句里就可以了。
    正如你上面的例子:如果no='13910000000'而start='1390000',end='1392000'(不考虑效率)
    ...where substring(no,1,6)>条件1 and substring(no,1,6)<条件2
    在C里面要注意传递参数的写法。