当前位置:  开发笔记 > 数据库 > 正文

一次更换多个字符的最佳查询?

如何解决《一次更换多个字符的最佳查询?》经验,为你挑选了1个好方法。

我需要在一个大表中替换许多不同的字符.由于这些来自Windows-1252字符集,我通过ascii代码引用字符.这些可以在几个列中找到.天真的方法是单独更换每个或替换替代品.

个人更换:

UPDATE table SET name = REPLACE(name, CHR(147), '"'), city = REPLACE(city, CHR(147), '"');
UPDATE table SET name = REPLACE(name, CHR(148), '"'), city = REPLACE(city, CHR(148), '"');
UPDATE table SET name = REPLACE(name, CHR(150), '-'), city = REPLACE(city, CHR(150), '-');
....

嵌套,如下所述:http://oraclecoder.com/tutorials/oracle-multiple-replace-function--2989.

我很好奇一个人比另一个好.或者,如果有第三种选择甚至更好?我有很多行要迭代,所以任何能提高性能的东西都非常感激.



1> Lukasz Szozd..:

您可以使用TRANSLATE函数立即执行此操作:

WITH cte AS
(
  SELECT  '“”–' AS name
  FROM dual
)
SELECT name, TRANSLATE(name, '“”–', '""-') AS result
FROM cte;

SqlFiddleDemo

在你的情况下:

UPDATE table 
SET name = TRANSLATE(name, '“”–', '""-'),
    city = TRANSLATE(name, '“”–', '""-')
-- WHERE REGEX_LIKE(name, '.*(“|”|–).*')    -- filter record for update
--    OR REGEX_LIKE(city, '.*(“|”|–).*')

从Windows-1252:

147 - “    Left  double curved quote
148 - ”    Right double curved quote
150 - –    En dash

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有