SQL语句:
ARFCN IN (Replace(TCH,' ',','))查不出数据
ARFCN IN (80,90,100)却能查出数据?大家谁知道这是为什么?
(前提:TCH = 80 90 100 而且当TCH等于单独一个值得时候也是可以查得出数据的。比如TCH=80的时候,也是可以查出数据的。)
用的是ACCESS 数据库。在线等

解决方案 »

  1.   

    你在执行SQL之前就Replace掉空格就可以了。也就是说把SQL组装好后再执行SQL,不要到DB端Replace
      

  2.   

    我明白你的意思,但是我现在是要根据DB端取TCH(每一行的TCH是不同的),所以不能执行SQL之前就Replace的,明白我的意思吗?
      

  3.   

    明白,那你就别用IN了,用InStr之类的函数,举个例子就是查 80 90 100 这个字符串中是否含有ARFCN字符。Oracle中的写法:
    select * from hanm_az_torikomi_def t where instr('101,003,036',t.depo_kanri_cd) > 0 因为我不知道Access里查含有字符串的语法怎么写。用IndexOf代替:ARFCN IN (Replace(TCH,' ',','))改为:Where IndexOf(TCH, ARFCN) > 0
      

  4.   

    我搜了一下,ACCESS里也是InStr,那就可以这么写了:INSTR(TCH, ARFCN) > 0或者你不放心,REPLACE也行。INSTR(Replace(TCH,' ',','), ARFCN) > 0
      

  5.   

    明白你的意思,但是,假如:字符串为80 90 100 ,当ARFCN的值=10,=1,那也可以查出来,显然,数据是不存在的。
      

  6.   

    80 90 100变为'80','90','100'然后查是否含有'80'这样的严格限定就可以了。当然不如直接用IN好,但是IN的内容发生变化,只能用替代办法了。