先在数据库里写一个 split 函数,然后
select s,count(s)
from
(select str_split (special_equipment,'/') s from table )
group by s
order by s
下面 是 split 函数 可以 试试, 但不一定适合,自己可以改改
CREATE OR REPLACE TYPE str_split_array IS TABLE OF VARCHAR2 (4000);
CREATE OR REPLACE FUNCTION str_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN str_split_array
IS
j INT := 0;
i INT := 1;
len INT := 0;
len1 INT := 0;
str VARCHAR2 (4000);
split_array str_split_array := str_split_array ();
BEGIN
len := LENGTH (p_str);
len1 := LENGTH (p_delimiter);
WHILE j < len
LOOP
j := INSTR (p_str, p_delimiter, i);
IF j = 0
THEN
j := len;
str := SUBSTR (p_str, i);
split_array.EXTEND;
split_array (split_array.COUNT) := str;
IF i >= len
THEN
EXIT;
END IF;
ELSE
str := SUBSTR (p_str, i, j - i);
i := j + len1;
split_array.EXTEND;
split_array (split_array.COUNT) := str;
END IF;
END LOOP;
RETURN split_array;
END str_split;
/
INSTR(C1,C2,I,J) 在一个字符串中搜索指定的字符,返回发现指定的字符的位置; C1 被搜索的字符串 C2 希望搜索的字符串 I 搜索的开始位置,默认为1 J 出现的位置,默认为1
先读取出来 然后foreach遍历分割 .split("/")
/的个数是不是不确定?如果可以就是适合用函数去分割了
eeeeee