【发布时间】:2019-12-27 21:56:22
【问题描述】:
我需要替换字符。 B 代表 V,反之亦然,Z 代表 S,反之亦然 在甲骨文中
DECLARE
lc_word_so VARCHAR2 (500);
lc_word_lst VARCHAR2 (500);
lc_word VARCHAR2 (500) := 'VBZ';
ln_length NUMBER := LENGTH (lc_word);
lc_search VARCHAR2 (2);
lc_replace VARCHAR2 (2);
TYPE typ_search IS VARRAY (6) OF VARCHAR2 (1);
arr_search typ_search := typ_search ('B','V','S','Z');
BEGIN
IF ln_length > 0 THEN
lc_word_so := NULL;
FOR i IN 1 .. arr_search.COUNT LOOP
IF MOD (i, 2) = 0 THEN
lc_search := arr_search (i);
lc_replace := arr_search (i - 1);
ELSE
lc_search := arr_search (i);
lc_replace := arr_search (i + 1);
END IF;
FOR j IN 0 .. ln_length LOOP
lc_word_lst := lc_word_so;
lc_word_so := REGEXP_REPLACE (lc_word, lc_search, lc_replace, 1, j, 'i');
IF lc_word_so = lc_word THEN
EXIT;
ELSE
IF (lc_word_lst IS NULL OR lc_word_lst != lc_word_so) THEN
DBMS_OUTPUT.put_line (lc_word_so);
END IF;
END IF;
END LOOP;
END LOOP;
END IF;
END;
我期望输出: 论坛 BBZ BVS BVZ VBS VBZ VVS VVZ
但实际输出是: VVZ BBZ 微博
【问题讨论】:
标签: oracle plsql regexp-replace