1
我想使用select查询单独实现下面的代码片段o/p。有没有可能不使用正则表达式?使用SQL仅显示字符串中重复的字符数
Character Count when string input is dynamic.
DECLARE
str VARCHAR2(255);
lv_val NUMBER;
lv_char CHAR(1);
lv_unq VARCHAR2(255);
BEGIN
str:= :p_string;
FOR i IN 1..length(str)
LOOP
lv_val := 0;
lv_char := SUBSTR(str,i,1);
IF instr(lv_unq,lv_char)>0 THEN
NULL;
ELSE
lv_unq := lv_unq||lv_char;
lv_val := ((LENGTH(str) - LENGTH(REPLACE(replace(str,' ',''), lv_char, '')))/LENGTH(lv_char));
--select ((length(str) - LENgth(REPLACE(str, lv_char, '')))/LENgth(lv_char)) into lv_val FROM dual;
DBMS_OUTPUT.PUT_LINE('Character '||lv_char || ' is repeated :'||lv_val||' times in the string '||str);
END IF;
END LOOP;
END;
如果您显示示例字符串和预期输出会更好。 – Noel 2014-12-05 14:40:20