模糊查询,语句如下:
select * from [table] where class like '+''''+'%'+edit1.Text+'%'+''''+'
对文字和数字查询都没问题,但如果查询条件里包含其它字符(比如在edit1中输入
[2002]04 ) ,结果就查不到。不知有没有解决办法,请兄弟们帮忙,谢了。

解决方案 »

  1.   

    可用 maskedit(更快捷)
    或:
    给各格式,让程序判断是否为正确的格式,为1则查询,为0则提示重新输入正确的格式
      

  2.   

    楼主参考一下我的问题
    http://community.csdn.net/Expert/topic/3651/3651031.xml?temp=.2802851
      

  3.   

    sql='select * from [table] where class like'+ quotedstr(edit1.text)
      

  4.   

    你是什么数据库,
    SQL Server 2000 里方括号[]是有特殊含义的,改在全角的[]试试
      

  5.   

    tjianliang(乡关何处):
        我用access。
      

  6.   

    不知道原因在哪,[ ] 似乎也不是太特殊的字符,而且精确查询
        ADOQuery1.sql.add(' and class=' + '''' + edit1.Text + '''' + '');
        是可以查出[2002]04这一结果的。
        GGJJDDMM们,救命啊。
      

  7.   

    web700(*FS*的小狗腿子):
        怎么过滤掉?明示,谢谢。
      

  8.   

    这里边说的很详细了,楼主怎么不看呢
    http://community.csdn.net/Expert/topic/3651/3651031.xml?temp=.2802851
      

  9.   

    如果是查询以edit1.Text开头为条件进行查询可以用下面的试试:
    'select * from [table] where LEFT(class,LEN(''' + Trime(edit1.Text) + ''')) = ''' + Trim(edit1.Text) + ''''
      

  10.   

    //再进一步改进
    'select * from [table] where SUBSTRING(class ,CHARINDEX('''+ Trim(edit1.Text) + ''',class ,0) ,len(''' + Trim(edit1.Text) + ''')) = ''' + Trim(edit1.Text) + ''''
      

  11.   

    解决办法很简单,不要用 LIKESQLString := 'SELECT * FROM Table WHERE CHARINDEX(' + Edit1.Text + ', FieldIndex) > 0';这个办法可以解决查询包括 % 在内的特殊符号P.S. 小心我拼写错误 :)
      

  12.   

    SQLString := 'SELECT * FROM Table WHERE CHARINDEX(''' + Edit1.Text + ''', FieldIndex) > 0';哈哈,刚刚说完就发现我漏了两个单引号