在LOWER()中使用SUBSTRING_INDEX()结果“省略”字符

时间:2011-02-18 11:09:43

标签: mysql user-defined-functions

我在MySQL中发现了一个非常奇怪的错误:

Bug #60166

  • 任何人都可以向我确认这是一个错误,而不是关于如何工作MySQL的理解问题吗? Valeriy Kravchuk :感谢您提供错误报告。已验证正如所描述的那样)
  • 这个错误的原因是什么???
  • 除了我在错误报告中描述的内容之外,还有人提供一些解决此问题的建议吗?
  • 如果有人可以帮我在MySQL 5.5.8上安装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),并且:

         
        
    • 使用来自http://www.mysqludf.org/的preg_ * UDF但是   目前,此解决方案不可用   在Windows / Mysql 5.5.8上因为   8个月大的bug #45549
    •   
  •   

1 个答案:

答案 0 :(得分:2)

select substring_index(lower(@user_at_host), '@', -1);

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