已知表中的一个字段(varchar2)的值是        12,23,23,45,现在需要slect * from a where id in(XXXXX--上面的字段),需要怎么做啊 ?

解决方案 »

  1.   

    无须转换,字符型,加引号 '12'   slect * from a where id in ('12','23','45')
      

  2.   

    用instr 查找看是否存在符合id这个字串~
      

  3.   

    在补充下、   12   、 34  111、  这是另一个字典表的主键(num型),而且  数据长度不一定,多选框啊。
      

  4.   

    给个拆分的例子,匹配的sql就不写了。
    -- 测试数据
    with tab as(
    select '12.5,14.0,15.8,18.5,' data  from dual
    union all 
    select '14.3,15.5,17.5,19.0,' from dual
    )-- 查询 SQL
    select DISTINCT
                    replace( 
                              regexp_substr(data||',','.*?'||'[,]',1,level)
                             ,',') data
    from tab
         connect by
                 level <= 
                       (length(DATA) - length(replace(DATA, ',')) ) / length(',')
                         -- 要截取的字符串 域数 ( 即, 以 '*' 分隔出来的字符串数量,有多少个)
                          -- 说明 (字符串长度 - 去除分隔符的长度) / 分隔符长度 = 分隔出的 字符串数量
                          -- 计算字符串长度时 , 需再补上一个分隔符,因为 1|2  => ( 分隔符数量 + 1 = 分隔域 )
    order by 1;