求一个查询SQL语句!查询数据库值得前四位减去一个固定值小于1的条件句!例如数据库里有个字段A的值 501234  减去一个501222  我只要提取字段A的前四位
并且 减去一个数 结果为如果小于1的 都查询出来!!!感谢万分!!! 

解决方案 »

  1.   

    select * from table where int(substr(char(字段A),1,4)) - 固定值 < 1
      

  2.   

    select * from table
    where (Convert(int,Left(字段A,4))-固定值)<1
      

  3.   

    query1.SQL.Add('select * from Tb where (Convert(int,Left(riqi,4))-'''+IntToStr( SysTime.wYear)+''') <1 ');
    您看对么?
      

  4.   

    query1.SQL.Add('select * from Tb where int(substr(char(riqi),1,4)) - '''+IntToStr( SysTime.wYear)+'''  < 1 ');这个对么?  
      

  5.   


    不对。
    query1.SQL.Add('select * from Tb where (Convert(int,Left(riqi,4))-'+IntToStr( SysTime.wYear)+')  <1 '); 
    或者
    query1.SQL.Add('select * from Tb where (Convert(int,Left(riqi,4))-:wYear)  <1 '); 
    query1.ParamByName('wYear').Value:=SysTime.wYear;
      

  6.   

    我按照您说的作了  提示 使用关键字 int,Left(riqi,4))-?)
      

  7.   


    query1.SQL.Add('select * from Tb where (Convert(int,Left(riqi,4))-:wYear)   <1 ');  
    query1.ParamByName('wYear').Value:=SysTime.wYear; ???????????出错?看清楚,是 :wYear
      

  8.   

    是的啊 wyear这没错  我定义var
    SysTime: TsystemTime;
    GetSystemTime(SysTime);后来是可以得出 2008的 但是还是报错int,Left(riqi,4))-2008)
      

  9.   

    query1.SQL.Add('select * from Tb where (Convert(int,Left(riqi,4))-'+IntToStr( SysTime.wYear)+')   <1 '); 这一句我改成
    query1.SQL.Add('select * from Tb where (Convert(int,Left(riqi,4))-2008)   <1 ');还是报错使用关键字
    int,Left(riqi,4))-2008)改成 
    query1.SQL.Add('select * from Tb where (2009-2008)   <1 ');后可以通  那么就是(Convert(int,Left(riqi,4)) 这哪的问题吧?
      

  10.   

    没辙,看不出问题了。你设置个断点,跟踪到query1.Open这里,然后看query1.Sql.Text,拷贝到Sql查询分析器里,看看能得出正常结果不。
      

  11.   

    select * from Tb where (Convert(int,Left(riqi,4))-2008) <1 这一句在sql分析查询器里 是没有问题的奇怪了 
      

  12.   

    执行query1.SQL.Add('... 
    前先query1.Sql.clear;
    或者
    query1.SQL.text:='...
      

  13.   

    郁闷阿 找不到原因啊gzmhero   您能给我您的邮箱么?
    我会将作的小源码发过去给您看看哪出的问题  谢谢您了!