select * from  table where field like "%中国%" or field like "%2002%"

解决方案 »

  1.   

    按照你的构思!就算是再好条件判别式和SQL语句都是无法满足你的要求!何不换一种查询方式解决这个问题?比如有专门的时间输入框、地区输入框等等!
      

  2.   

    先用split将用空格表示的字串转换成串型数组,再将其拼接成你需要的SQL。
      

  3.   

    把空格看成分割符,把字符串分开就可以了,然后再写sql语句
      

  4.   

    select * from tablename where custname like N'深圳'
    在前面要加N
      

  5.   

    对了 首先对字符串进行分析 
    得到以空格分隔的共多少个子串
    然后将各个子串拼成查询语句
    Where field 
    like '%SubStr1%'
    ...
    and like like '%SubStrn%'
      

  6.   

    恕我愚笨,如何得到子字符串的个数呢?我试过用楼上的查询语句,为什么查不到记录呢,我的代码如下,正确吗?请指教!(text1为输入查询条件的文本筐)
    Private Sub CmdSearch_Click()
    If Trim(Text1.Text) <> "" Then
        Dim strarray
        Dim rs As adodb.Recordset
        Set rs = New adodb.Recordset
        strarray = Split(Text1.Text, " ", -1, vbTextCompare)   
        rs.Open "select * from TABLE where field like '%strarray(0)%' and field like '%strarray(1)%'", cn, adOpenKeyset, adLockReadOnly, adCmdText
        If rs.RecordCount <> 0 Then
        Set mshflexgrid.DataSource = rs
    end sub
      

  7.   

    首先你使用以上的代码查不到记录的原因是因为你在查询字符串中使用'%strarray(0)%'只会将数组名当作字符串输出,而非取指定数组变量中的值,你可以使用下列语句来查看一下(即如何在字符串中输出变量值):
    Dim sql as String
    sql="select * from TABLE where field like '%strarray(0)%' and field like '%strarray(1)%'"
    Print sql
    结果你会发现此字符串是原样输出的,也就是说vb会把数组名当作字符串,而非按照你的意思去取数组变量中的值,你应该把它改为一下的形式才能按照你的想法在字符串中输出变量的值:
    rs.Open "select * from TABLE where field like '%" & strarray(0) & "%' and field like '%" & strarray(1) & "%', cn, adOpenKeyset, adLockReadOnly, adCmdText针对你提出的具体情况我把你的代码修改为以下形式:Private Sub CmdSearch_Click()
    If Trim(Text1.Text) <> "" Then
        Dim strarray
        Dim i As Long
        Dim sql As String
        Dim rs As adodb.Recordset
        Set rs = New adodb.Recordset
        strarray = Split(Text1.Text, " ", -1, vbTextCompare)
        sql = "select * from TABLE where"
        For i = LBound(strarray) To UBound(strarray)
           If i <> UBound(strarray) Then '判断是否是最后一个数组
             sql = sql & "field like " & "'%" & strarray(i) & "%'" & " and "
           Else
             sql = sql & "field like " & "'%" & strarray(i) & "%'"
           End If
        Next   
        rs.Open sql, cn, adOpenKeyset, adLockReadOnly, adCmdText
        If rs.RecordCount <> 0 Then
        Set mshflexgrid.DataSource = rs
    end sub现在应该可以了吧
    see it?
      

  8.   

    SELECT * FROM [a] WHERE [a] LIKE '2002 中国'
    SELECT * FROM [a] WHERE [a]='2002 中国'试了试能找到啊~
      

  9.   

    你最前面的语句的REPLACE是不是调用SQL SERVER的,如果是,那应该是SQL SERVER2000的一个BUG,安装SP2就可以了。
      

  10.   

    strarray = Split(Text1.Text, " ", -1, vbTextCompare)
    if UBound(strarray)=0 then
        sql = "select * from TABLE "
    else
        sql = "select * from TABLE where"
        For i = LBound(strarray) To UBound(strarray)
           If i <> UBound(strarray) Then '判断是否是最后一个数组
             sql = sql & "field like " & "'%" & strarray(i) & "%'" & " and "
           Else
             sql = sql & "field like " & "'%" & strarray(i) & "%'"
           End If
        Next   
    end if
      

  11.   

    多谢楼上各位,尤其是remanwang(玩玩儿) 的提醒,真是一语惊醒梦中人啦