【问题标题】:PostgreSQL replace range of unicode charsPostgreSQL 替换 unicode 字符范围
【发布时间】:2016-07-02 16:19:49
【问题描述】:

XML 导出中不允许使用的字符存在一些问题。该请求只是从文本中删除无效字符以确保正确导出/导入数据。

到目前为止,感谢this post,我有一个 sql 语句替换了一个声明的 Unicode 字符:

UPDATE mytable SET myproperty = replace(myproperty, U&'\UNICODE', '');

它从定义的单元格内的所有匹配项中删除指定的 Unicode。但我想给一堆 Unicode 字符来替换,例如。 0x1 - 0xf 有人知道如何实现这一目标吗?

【问题讨论】:

    标签: sql regex postgresql unicode replace


    【解决方案1】:

    使用TRANSLATE 删除多个字符:

    TRANSLATE(myproperty, 'list of characters', '');
    

    通常用于替换字符,但如果替换字符串为空,则会将其删除。

    编辑:

    当然你也可以使用正则表达式,这允许字符范围:

    regexp_replace(myproperty, '[\u0041-\u0043a]', '', 'g')
    

    添加'g' 标志以替换所有出现...

    【讨论】:

    • 感谢@dnoeth,这有点帮助。你知道设置代码范围的方法吗?我试过了,但它不起作用(例如U&'[\0041-\0043]'
    • @RuthiRuth:无法在TRANSLATE 中指定范围,但有REGEXP_REPLACE。我修改我的答案...
    • 我试过了,但后来我只得到了“myproperty”中的第一次出现,而不是所有出现...
    • 我明白了,我必须设置标志 'g' 以将其替换为所有匹配项。如果您可以编辑您的答案@dnoeth,我可以将其标记为正确:)
    • @RuthiRuth:谢谢,每个 DBMS 都有自己的正则表达式规则。将其添加到我的答案中...
    猜你喜欢
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    相关资源
    最近更新 更多