我需要用特殊字符替换 HTML 代码。 我受到 HTML 代码的影响,如所述 here
+------------------------+
+ Html code + Display +
+-----------+------------+
+ À + À +
+ à + à +
+ Á + Á +
+ á + á +
+ È + È +
+ è + è +
+ É + É +
+ é + é +
+ Ì + Ì +
+ ì + ì +
+ Í + Í +
+ í + í +
+ Ò + Ò +
+ ò + ò +
+ Ó + Ó +
+ ó + ó +
+ Ù + Ù +
+ ù + ù +
+ Ú + Ú +
+ ú + ú +
+ « + « +
+ » + » +
+ € + € +
+ ° + ° +
+------------------------+
我在数据库中发现这些条目毫无意义。所以需要将它们改成原来的符号(字符)
数据设置:也可在此 SQL fiddle 中找到。
必须根据下表更新以下值
CREATE TABLE TEMP
(
COL1 VARCHAR2(50 CHAR),
COL2 VARCHAR2(50 CHAR),
COL3 VARCHAR2(50 CHAR),
COL4 VARCHAR2(10 CHAR)
);
Insert into TEMP (COL1, COL2, COL3, COL4)
Values
('VIA I MAGGIO', 'GIÙ PER LA STRADA', 'TOR LUPARA', '83');
Insert into TEMP (COL1, COL3, COL4)
Values
('VIA D''AZEGLIO', 'MUGGIÒ', '12');
Insert into TEMP (COL1, COL2, COL3, COL4)
Values
('VIA PONTE NUOVO', 'TOSCA CAFÈ', 'VERONA', '8a');
Insert into TEMP (COL1, COL3, COL4)
Values
('LOCALITÓ AGELLO', 'SAN SEVERINO MARCHE', '60');
Insert into TEMP (COL1, COL2, COL3, COL4)
Values
('VIA PAPA GIOVANNI XXIII', 'LOCALITÀ PREDONDO', 'BOVEGNO', '24');
Insert into TEMP (COL1, COL2, COL3, COL4)
Values
('VIA CATANIA', 'CASA DI OSPITAITÀ COLLEREALE', 'MESSINA', '26/B');
Insert into TEMP (COL1, COL2, COL3, COL4)
Values
('PIAZZA DI SANTA CROCE IN GERUSALEMME', 'MINISTERO BENI E ATTIVITÀ CULTURALI', 'ROMA', '9/a');
Insert into TEMP (COL1, COL2, COL3, COL4)
Values
('VIA RONCIGLIO', 'LOCALITÀ MONTECUCCO', 'GARDONE RIVIERA', '55');
Insert into TEMP (COL1, COL2, COL3, COL4)
Values
('BORGO TRINITA''', 'Borgo Trinità, 58', 'BELLANTE', '58');
Insert into TEMP (COL1, COL2, COL3, COL4)
Values
('10 PIAZZA S. LORENZO', 'ROVARÈ', 'S. BIAGIO DI GALLALTA', '10');
Insert into TEMP (COL1, COL3, COL4)
Values
('LOCALITÀ MALCHINA', 'SISTIANA', '3');
Insert into TEMP (COL1, COL2, COL3, COL4)
Values
('VIA DEI CROCIFERI', 'PRESSO AUTORITÀ ENERGIA', 'ROMA', '19');
Insert into TEMP (COL1, COL2, COL3, COL4)
Values
('VIALE STAZIONE', 'FRAZIONE SAN NICOLÒ A TREBBIA', 'ROTTOFRENO', '10/B');
Insert into TEMP (COL1, COL2, COL3, COL4)
Values
('VIA ADOLFO CONSOLINI', 'ALBARÈ DI COSTERMANO', 'COSTERMANO', '45 B');
COMMIT;
设置完成后我们看到的是
SELECT * FROM TEMP;
COL1 COL2 COL3 COL4
---------------------------------------------------------------------------------- --------------------- --------
VIA I MAGGIO GIÙ PER LA STRADA TOR LUPARA 83
VIA D'AZEGLIO MUGGIÒ 12
VIA PONTE NUOVO TOSCA CAFÈ VERONA 8a
LOCALITÓ AGELLO SAN SEVERINO MARCHE 60
VIA PAPA GIOVANNI XXIII LOCALITÀ PREDONDO BOVEGNO 24
VIA CATANIA CASA DI OSPITAITÀ COLLEREALE MESSINA 26/B
PIAZZA DI SANTA CROCE IN GERUSALEMME MINISTERO BENI E ATTIVITÀ CULTURALI ROMA 9/a
VIA RONCIGLIO LOCALITÀ MONTECUCCO GARDONE RIVIERA 55
BORGO TRINITA' Borgo Trinità, 58 BELLANTE 58
10 PIAZZA S. LORENZO ROVARÈ S. BIAGIO DI GALLALTA 10
LOCALITÀ MALCHINA SISTIANA 3
VIA DEI CROCIFERI PRESSO AUTORITÀ ENERGIA ROMA 19
VIALE STAZIONE FRAZIONE SAN NICOLÒ A TREBBIA ROTTOFRENO 10/B
VIA ADOLFO CONSOLINI ALBARÈ DI COSTERMANO COSTERMANO 45 B
14 rows selected.
我想看到的是
COL1 COL2 COL3 COL4
------------------------------------- ----------------------------------- ------------------------- ----------
VIA I MAGGIO GIÙ PER LA STRADA LUPARA 83
VIA D'AZEGLIO MUGGIÒ 12
VIA PONTE NUOVO TOSCA CAFÈ VERONA 8a
LOCALITÓ AGELLO SAN SEVERINO MARCHE 60
VIA PAPA GIOVANNI XXIII LOCALITÀ PREDONDO BOVEGNO 24
VIA CATANIA CASA DI OSPITAITÀ COLLEREALE MESSINA 26/B
PIAZZA DI SANTA CROCE IN GERUSALEMME MINISTERO BENI E ATTIVITÀ CULTURALI ROMA 9/a
VIA RONCIGLIO LOCALITÀ MONTECUCCO GARDONE RIVIERA 55
BORGO TRINITA' Borgo TrinitÀ, 58 BELLANTE 58
10 PIAZZA S. LORENZO ROVARÈ S. BIAGIO DI GALLALTA 10
LOCALITÀ MALCHINA SISTIANA 3
VIA DEI CROCIFERI PRESSO AUTORITÀ ENERGIA ROMA 19
VIALE STAZIONE FRAZIONE SAN NICOLÒ A TREBBIA ROTTOFRENO 10/B
VIA ADOLFO CONSOLINI ALBARÈ DI COSTERMANO COSTERMANO 45 B
14 rows selected.
陷阱:
À
也可以写为À
,因此所有 HTML 代码都必须不区分大小写。- 多个 HTML 代码可以影响一列。所以我需要在上表中的所有 HTML 代码中搜索任何列。
到目前为止我尝试的是一个带有替换功能的简单更新
UPDATE TEMP
SET COL1 = REPLACE (COL1, 'À' , 'À');
这样下去,我会花几天时间来写脚本。因为我需要在 20 多个表中进行此修复,每个表有 40 多个列。因此期待一种更简单的方法来做到这一点。
有人可以帮助我摆脱作家的困境吗?
还有哪个是最好的替换方式,是使用字符还是ASCII码转换?
更新:
我到底需要什么
如何编写更新集; 'À' 或 CHR(192)
一张表的一条语句中的所有更新(可以是 CASE 语句、REGEXP_LIKE 和 REGEXP_REPLACE 组合即可)
最佳答案
您想使用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%'
关于sql - oracle sql中用特殊字符替换HTML代码的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22398274/