【问题标题】:Wierd result using REGEXP_REPLACE - strings are aggregated使用 REGEXP_REPLACE 的奇怪结果 - 字符串被聚合
【发布时间】:2019-03-03 06:58:50
【问题描述】:

我正在尝试使用REGEXP_REPLACE 将某些字母替换为其他字母。

这是我的查询 - 我将使用 sakila 示例数据库:

SELECT first_name,
       CONVERT(REGEXP_REPLACE(first_name,'a','d') USING utf16) AS replaced
FROM sakila.actor

这就是结果(MySql Workbench,8.0.11) - 正如你所看到的,结果是“聚合的”:

我尝试使用this fiddle 重现它,但它没有重现。

为什么会这样?

【问题讨论】:

    标签: mysql regex mysql-8.0


    【解决方案1】:
    • 为什么要使用 utf16??

    • REPLACE 完成这项工作时,为什么要使用REGEXP_REPLACE? (切换可能解决问题。)

    • 某些版本中存在可能导致结果不断延长的错误。请参阅 https://bugs.mysql.com/bug.php?id=90803 ,已在 8.0.12 中修复。升级。

    • 您使用的 Workbench 版本无关紧要;你用的是什么版本的 MySQL。

    【讨论】:

    • 好吧,我的 sn-p 只是我原始代码的最小、完整和可验证的 sn-p,它查询希伯来字母(因此是 utf16)以使用特定模式删除变音符号(因此 @987654324 @)。安装的 MySQL 版本相同:8.0.11。升级解决了,谢谢!
    • 有什么理由不使用无处不在的 utf8 而不是很少使用的 utf16?
    • 没有。会改变的。
    • 假设表中已有数据,您可能需要ALTERCONVERT TO 变体。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    相关资源
    最近更新 更多