本帖最后由 ggxxkkll 于 2013-10-30 10:49:56 编辑

解决方案 »

  1.   

    自己写个函数,大致类似下面      v_length := LENGTH(v_field);
          WHILE (v_start <= v_length) LOOP
            v_index := INSTR(v_field, ',', v_start);
          
            IF v_index = 0 THEN
              v_word := SUBSTR(v_field, v_start);
              v_start := v_length + 1;
            ELSE
              v_word := SUBSTR(v_field, v_start, v_index - v_start);
              v_start := v_index + 1;
            END IF;
          END LOOP;
      

  2.   

    SELECT * FROM t1 WHERE REGEXP_LIKE(col1,'^([^;]+(;)){4}([^;]+)$');
      

  3.   

    --使用正则表达式Select * From Test1
    where case when  regexp_like (col1,'\w+;\w+;\w+;\w+') then 1 else 0 end =1;
      

  4.   


    报错了:
                                            $
     *** Failure 3706 Syntax error: Data Type "col1" does not match a Defined Ty
     pe name.
    怎么解决?
      

  5.   


    …… 你确定是在用Oracle数据库吗?
      

  6.   


    还是同样的错误,能否帮忙用: REGEXP_INSTR 来实现,谢谢!!!
      

  7.   


    …… 你确定是在用Oracle数据库吗?不是Oracle数据,是别的数据库。
      

  8.   


    …… 你确定是在用Oracle数据库吗?能否帮忙用: REGEXP_INSTR 来实现
      

  9.   


    …… 你确定是在用Oracle数据库吗?不是Oracle数据,是别的数据库。好歹也两级专家了,发帖也太马虎了吧。什么数据库都不说下
      

  10.   

    length(col1)-length(replace(col1,';',''))=4 and length(col1)=length(replace(col1,';;','')可解决
      

  11.   

    SELECT * FROM t1 WHERE REGEXP_INSTR(col1,'^([^;]+(;)){4}([^;]+)$') > 0;
      

  12.   

    SELECT * FROM t1 WHERE REGEXP_INSTR(col1,'^([^;]+(;)){4}([^;]+)$') > 0;楼主好强大啊!  谢谢!