答案 0 :(得分:3)
您想使用UTL_I18N.unescape_reference。
为了不编写长脚本,让Oracle为您完成工作。然后运行其生成的脚本:
select
'UPDATE ' || table_name || ' SET ' || col_name || ' = UTL_I18N.unescape_reference(' || col_name || ');'
from
all_tab_cols
where
owner = <MY_NAME>
and
table_name in ('....') -- you can use this clause too: table_name like '%my_table%'
答案 1 :(得分:1)
您可以创建一个过程,将UPDATE语句假脱机到一个文件中,您最终可以执行该过程来执行实际更新。
步骤将涉及以下内容:
实际步骤可能与上述步骤不同。但我们的想法是通过创建一个自动创建必要的UPDATE语句的过程来加速任务。
答案 2 :(得分:0)
行。现在我找到了一个解决方案来创建here所述的函数。上述两个答案都对此有用。
选项1:
CREATE OR REPLACE FUNCTION STRIP_HTML ( DIRTY IN VARCHAR2,
TO_CVS IN NUMBER DEFAULT 0 )
RETURN VARCHAR2
IS
OUT CLOB;
TYPE ARR_STRING IS VARRAY ( 38 ) OF VARCHAR2 ( 64 );
ENTITIES_SEARCH_FOR ARR_STRING;
ENTITIES_REPLACE ARR_STRING;
CONT NUMBER;
BEGIN
-- to accelerate the issue
IF DIRTY IS NULL
THEN
RETURN DIRTY;
END IF;
ENTITIES_SEARCH_FOR :=
ARR_STRING ( 'À',
'&AGRAVE;',
'à',
'Á',
'&AACUTE;',
'á',
'È',
'&EGRAVE;',
'è',
'É',
'&EACUTE;',
'é',
'Ì',
'&IGRAVE;',
'ì',
'Í',
'&IACUTE;',
'í',
'Ò',
'&OGRAVE;',
'ò',
'Ó',
'&OACUTE;',
'ó',
'Ù',
'&UGRAVE;',
'ù',
'Ú',
'&UACUTE;',
'ú',
'«',
'&LAQUO;',
'»',
'&RAQUO;',
'€',
'&EURO;',
'°',
'&DEG;' );
ENTITIES_REPLACE :=
ARR_STRING ( 'À',
'À',
'à',
'Á',
'Á',
'á',
'È',
'È',
'è',
'É',
'É',
'é',
'Ì',
'Ì',
'ì',
'Í',
'Í',
'í',
'Ò',
'Ò',
'ò',
'Ó',
'Ó',
'ó',
'Ù',
'Ù',
'ù',
'Ú',
'Ú',
'ú',
'«',
'«',
'»',
'»',
'€',
'€',
'°',
'°' );
OUT := DIRTY;
FOR CONT IN 1 .. 38
LOOP
OUT :=
REPLACE ( OUT,
ENTITIES_SEARCH_FOR ( CONT ),
ENTITIES_REPLACE ( CONT ) );
END LOOP;
RETURN (OUT);
END STRIP_HTML;
<强>选项2:强>
SELECT UTL_I18N.unescape_reference(COL1) COL1,
UTL_I18N.unescape_reference(COL2) COL2,
UTL_I18N.unescape_reference(COL3) COL3,
UTL_I18N.unescape_reference(COL4) COL4
FROM TEMP;
但是这不能处理所有大写的HTML友好代码。所以需要另外替换它。