【问题标题】:SUBSTRING_INDEX() results "omit" character when used inside LOWER()在 LOWER() 中使用时,SUBSTRING_INDEX() 会导致“省略”字符
【发布时间】:2011-06-29 18:13:53
【问题描述】:

我在 MySQL 中发现了一个非常奇怪的错误,我在这里报告过:

Bug #60166

  • 谁能向我确认这是一个错误,而不是对 MySQL 工作原理的理解问题?Valeriy Kravchuk:感谢您的错误报告。已按照描述进行验证)
  • 这个bug是什么原因???
  • 除了我在错误报告中描述的内容之外,还有其他人可以提供解决此问题的建议吗?
  • 如果有人可以帮助我在带有 MySQL 5.5.8 的 Windows 上安装 MySQL UDF,尽管Bug #45549,我会非常感激不尽!

无论如何,关于Bug #42404,SUBSTRING_INDEX() 似乎有一个非常奇怪的行为。

提前感谢您的帮助!

[编辑]

这里,我已经在错误报告中给出了可能的解决方案:

建议的修复方法:

  • 用途:

    mysql> SELECT SUBSTRING_INDEX(LOWER(@user_at_host), '@', -1);

    代替:

    mysql> SELECT LOWER(SUBSTRING_INDEX(@user_at_host, '@', -1));

  • 避免使用这个有问题的功能(参见一年多的错误 #42404),以及:

【问题讨论】:

    标签: mysql user-defined-functions


    【解决方案1】:
    select substring_index(lower(@user_at_host), '@', -1);
    

    select lower(substring(@user_at_host, locate('@', @user_at_host)+1));
    

    【讨论】:

    • Is there anybody to provide some advice to solve this issue **other** than that I described in the bug report? 这是我已经提出的第一个解决方案^^
    猜你喜欢
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 2015-09-02
    • 2021-07-07
    • 1970-01-01
    相关资源
    最近更新 更多