AND ( model_nm like '%model_nm_arr(0) %' OR model_nm like '% model_nm_arr(1)%' OR model_nm like '% model_nm_arr(2)%')
应该什么也查不到

解决方案 »

  1.   

    AND ( model_nm like '%'||model_nm_arr(0)||'%' OR model_nm like '%'||model_nm_arr(1)||'%' OR model_nm like '%'||model_nm_arr(2)||'%')
      

  2.   

    前辈说的对,我是在asp里面写的,偷了个懒,没写完全。实际上数据已经查出来了,但是不对。可能我对like的理解错了,请看看我的问题,指正我一下
      

  3.   

    asp里面的字符串连接用的是&,不是||。
    现在的情况是,照我的思路写,查询出的错误记录类似于以下的情况。
    查询的结果
    ----------
    tetd
    tet
    类似这样的数据也给查出来了,可是这样数据不对阿。我想要的记录必须包含test1,test2,test3的其中一个或者多个,用like可以实现我的想法么?
      

  4.   

    AND ( model_nm like '%"&model_nm_arr(0)&" %' OR model_nm like '%"& model_nm_arr(1)&"%' OR model_nm like '%"& model_nm_arr(2)&"%')
      

  5.   

    to  ORARichard(没钱的日子好难过啊) :没错,没错,我和您写的一模一样。
    可能是我没有把问题说清楚,假如我的查询条件是test1 test2 test3
    现在我把test111111这条记录也给查出来了,怎么能让他只查出包含test1的记录。不知道各位前辈这回明白我的意思了么?like的话只要相似的都查出来了,怎么能让他更精确一些。
      

  6.   

    這個在Oracle中查詢出來是沒問題的啊~~
      

  7.   

    照您上面那样写,那test111111的记录不是也会查询出来么。
    关键是这样,我这个数组是动态的,取决于用户的输入。实际上我是把这条SQL语句放在一个循环里面用For语句给model_nm_arr(i)赋值,并且生成SQL语句。假如用户输入test1      test2          test3,我先把它们之间的一大堆空格变成一个,之后split取进数组,其实就是这样了like '%test1 %'。
      

  8.   

    我后写的test1后面还有个空格啊
      

  9.   

    like '%test1 %'(含空格的)不能取出'test11111'这样的记录吧
      

  10.   

    like 查不准确,应该这样 "where  model_nm in ("&model_nm_arr(0)&" ,"& model_nm_arr(1)&" ,"& model_nm_arr(2)&")"
      

  11.   

    刚才吃饭的时候我试验了一下大家的办法。
    to 76_Dinah(梅子) :照您的办法出现了一种很奇怪的情况,目前我正在调查中,目前不清楚为什么会这样。具体的情况是,个别的查询数据正常,但是另外的不正常。
    to  ORARichard(没钱的日子好难过啊) :加了空格以后,假如用户输入test2,那么类似这样的正确记录无法得到
    ------
    test1 test2
    asdasdasd   test3    test2
      

  12.   

    to 76_Dinah(梅子) :我发现一个很奇怪的问题,用您的方法,假如用户输入test1,那么下面这样的正确记录找不到
    --------
    test1 test2
    test2 test1
    可是我觉得不应该啊.....奇怪。
    to  ORARichard(没钱的日子好难过啊):这次可能又像上次了,到头来还是找不到原因和办法,郁闷.......
      

  13.   

    ... like '%test1 %' or ... like '%test1'
      

  14.   

    to ORARichard(没钱的日子好难过啊) :asp中加空格的写法,经过试验,还是不行。test1111111还是查到了。
    AND ( model_nm like '%" & UCase( model_nm_arr(i) )  & " " & "%' OR model_nm like '%" & UCase( model_nm_arr(i) ) & "%' ")
      

  15.   

    试一下"where  instr("&model_nm_arr(0)&model_nm_arr(1)&model_nm_arr(2)&",trim(model_nm),1,1)>0"
      

  16.   

    where (model_nm like '%test1%' or model_nm like '% test1%' or model_nm like '%test1 %' or model_nm like '% test1 %')
      

  17.   

    各位的方法我有时间一定试验,刚才我又发现一个惊人的bug,我塞,如果用户在两个查询条件中间输入无数空格的话,所有的记录都能查出来。
    不得已我只好做了一个JS函数,限制用户不能输入2个以上的空格,如果这样的话,那我以前的代码就没有问题了。不过我擅自改了设计,靠.......不知道领导会不会高兴???!!!我又一次被数据查询虐啦,555。但是设计人员的想法有时候真奇怪,难道稍微限制用户的输入的程序,就不是好程序么?有时候给了用户最大的自由,留给开发人员又会是什么呢......不知道我什么时候能变得像大家这样强,努力吧.....唉....
      

  18.   

    顺便问一句,是不是现在登陆CSDN不给100分了???!!我要是没有分了可就惨了...
      

  19.   

    怪不得我的分数越来越少.....结帖
    今后还请各位多多指教,特别是 ORARichard(没钱的日子好难过啊) 大哥^^