id 名字  区域ID
1   a    4,5,67,8,9
2   b    5,7
3   c    1,2,3
我需要根据我当前的区域ID 4 来找出A记录。就是说 如果区域ID中有4 该记录符合条件 被查询。oracle 中又没有spilt。 实在不知道这个查询语句怎么写了。

解决方案 »

  1.   

    id 名字 区域ID
    1 a 4,5,6,7,8,9
    2 b 5,7
    3 c 1,2,3首先要把 4 5 6 7 8 9变成数组吧?然后再not in 或者怎么样 但是怎么把它变成集合呢
      

  2.   

    where的时候 不能直接where 区域ID=“XXX” 因为区域ID是字符串
      

  3.   

    select * from 表 where instr(','||区域ID||',',',4,')>0
      

  4.   

    instr 不对  如果我要查询134 如果区域ID 为134565,123  他也会返回1 那我不如直接用like
      

  5.   

    SQL文难写啊,说明表设计不好啊
      

  6.   

    select * from 表 where instr(','||区域ID||',',',4,')>0 是对的 ,4,在里面是唯一的,不可能出现楼主说的那个情况
      

  7.   

    1。你的数据最前面和最后面都加一个逗号; 
    2。6楼和12楼都可以解决问题;
    3。Select * from 表 where field2 like '%'||area_code||'%';
      

  8.   

    With test As(
    Select 1 Id, 'a' Name, '464065753,464065758,594469096' area From dual
    Union
    Select 1 Id, 'a' Name, '106392288,106392476,116336796' area From dual
    Union
    Select 1 Id, 'a' Name, '48230578,48363272,48430129' area From dual
    )
    Select * From test Where area Like '%430%';