各位大侠好:
    我写select碰到这个问题,数据库中有个字段lsh是数值型:
 var intsl:integer;   
 begin
    intsl:=strtoint(trim(elsh.text));
    query1.add('select * from mydb where lsh='''+intsl+'''');
 select语句出错,字段lsh是数值型,于是我改成:
    query1.add('select * from mydb where lsh='+intsl);
  还是不行,再改成:query1.add('select * from mydb where lsh= intsl+');还是不行。
  请教:针对数值型字段的条件的select语句到底该怎么写啊?
  先谢谢了!!!

解决方案 »

  1.   

    var 
      intsl:String;   
    begin
        intsl:=trim(elsh.text);
        query1.add('select * from mydb where lsh='+intsl+');
      

  2.   

    query1.add('select * from mydb where lsh='+trim(elsh.text));
      

  3.   

    首先谢谢两位了
    可是两位的写法小弟有点看不懂,哪位兄弟能不能详细解释一下数值型子段和字符型子段在作为where条件时有什么不同啊
      

  4.   

    query1.add('select * from mydb where lsh='+ IntToStr(intsl));
      

  5.   

    如果你只用这个查询时候不要忘了query1.sql.Clear;
    不管什么类型值,在拼接SQL时都是为String型的.当然了拼接SQL时要注意其类型.
      

  6.   

    intsl:=trim(elsh.text);
        query1.add('select * from mydb where lsh='''+intsl+'''');
    因为query1.add 的参数是为字符串类型,'''+intsl+'''' 而这里面也为字符串类型,
    哪为这整条SQL语句也为一条字符串,在DELPHI里是这样认为的,但是传到SQL后台,则会按SQL的命令进行执行;如果库里哪个字段为整型,存进去的字段就会按整行,
      

  7.   

    query1.add('select * from mydb where lsh='''+trim(elsh.text)+''');
      

  8.   


     begin
        intsl:=strtoint(trim(elsh.text));
        query1.text:='select * from mydb where lsh='+inttostr(intsl);
        query1.open;
        
      

  9.   

    query1.add('select * from mydb where lsh='+trim(elsh.text));
      

  10.   

    var 
      intsl:String;   
    begin
    Query1.SQL.Clear;
    Query1.SQL.Add('Select * from Mydb');
    Query1.SQL.Add('Where lsh ='''+intsl+'''');
      

  11.   

    intsl:=trim(elsh.text);
        query1.add('select * from mydb where lsh='''+intsl+'''');