我的SQL是这样的
select * from custom where addr like '%:addr%'
目的是取地址中包含addr参数指定字符串的数据,但是编译提示%是不合法字符,如何解决?

解决方案 »

  1.   

    like的都是字符串,直接用+就可以了
      

  2.   

    commandText:='select * from custom where addr like ''%''+:addr+''%'''
      

  3.   

    select * from custom where addr like %:addr%
    也不行
      

  4.   

    在SQL.Text中添加的话,要这样写:select * from custom where addr like '%%:addr%%'
      

  5.   

    你直接将值写进去吧:SQL.Text:=Format(select * from custom where addr like '%%%s%%',[addr]);
      

  6.   

    我用Adoquery  add 為參數
    with Adoquery do
      begin
        close;
        sql.clear;
        sql.add('select * from custom');
        sql.add('  where addr like'+''''+'%'+add+'%'+'''');
        open;
      end;
      

  7.   

    这是什么话?我又不是这个意思,我要用到query的param属性如:addr,query会把addr当成一个变量的
      

  8.   

    尽量不要用 param 传,有时会有问题
      

  9.   

    Aquery1.SQL.Text := 'select * from custom where addr like ''%''+:addr+''%''' 
      

  10.   

    'select * from custom where like addr = ''%'+:addr +'%'''
      

  11.   

    select * from custom where addr like ''%'addr'%'''
    addr作为变量就OK了
      

  12.   

    为什么非得用参数?
    如果内容是一个字串 adoquery.sql.add('select * from custom where addr like'+quotedstr('%'+(你的字串)+'%'))
      

  13.   

    ^_^,我也来:
    select * from custom where addr like :addrpara...........:='%'+str+'%'
      

  14.   

    query中參數傳遞如果參數多了會不准確
      

  15.   

    'select * from custom where addr like ''%:addr%''';addr 是一个参数,要用进行赋值~~
      

  16.   

    wwx213说的也对,原来是很简单的问题