t_bm:表,geocode:编码字段,ls_code:变量,li_jb:变量,根据输入值ls_code、li_jb作为条件查询编码字段某几位的最大值,如下:
select IsNull(Max(left(geocode,li_jb*2))) from t_bm where left(geocode,(li_jb-1)*2)=left(ls_code,(li_jb-1)*2)

解决方案 »

  1.   

    'select IsNull(Max(left(geocode,+'''li_jb'''+*2))) from t_bm where left(geocode,(+'''li_jb'''+-1)*2)=left(+'''ls_code'''+,(+'''li_jb'''+-1)*2)'
      

  2.   

    不好意思,搞错几个地方,再发!'select IsNull(Max(left(geocode,'''+li_jb+'''*2))) from t_bm where left(geocode,('''+li_jb+'''-1)*2)=left('''+ls_code+''',('''+li_jb+'''-1)*2)'
      

  3.   

    是用ADOQuery做查询的啊,可以直接这样写吗,不是吧!
      

  4.   

    这样试试'select IsNull(Max(left(geocode,' + IntToStr(li_jb * 2) + '))) from t_bm where left(geocode,' + IntToStr((li_jb-1)*2) + ')=left(' + QuotedStr(ls_code) + ',' + IntToStr((li_jb-1)*2) +')'
      

  5.   

    语句还是不能正确执行,因为Delphi中没有left()这样的函数,我以前也用LeftStr()以及LeftBStr()等函数试过,但是Delphi里不能识别这些函数,真郁闷,我觉得Delphi不能直接支持输入SQL语句是它的一大缺憾!
      

  6.   

    谢谢  zfmich() !
    谢谢大家!
    结贴!