SUBSTRING_INDEX () приводит к выводу символа «пропустить» при использовании внутри LOWER () - PullRequest
1 голос
/ 18 февраля 2011

Я обнаружил очень странную ошибку в MySQL, о которой я сообщил здесь:

Ошибка # 60166

  • Может ли кто-нибудь подтвердить мне, что это ошибка, а не проблема понимания того, как работает MySQL? ( Валерий Кравчук : Спасибо за сообщение об ошибке. Проверено так же, как описано)
  • В чем причина этой ошибки ???
  • Кто-нибудь может дать какой-нибудь совет для решения этой проблемы, кроме того, который я описал в отчете об ошибке?
  • И если кто-нибудь может помочь мне установить MySQL UDF на Windows с MySQL 5.5.8, несмотря на Ошибка # 45549 , я буду очень благодарным!

В любом случае, в отношении ошибки # 42404 , SUBSTRING_INDEX () выглядит очень странно.

Заранее спасибо за любую помощь!

[EDIT]

Вот возможные варианты решения, уже приведенные мной в сообщении об ошибке:

Предлагаемое исправление:

  • Использование:

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

    вместо:

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

  • Избегайте использования этой функции с ошибками (см. Ошибку более чем за один год) # 42404 ) и:

1 Ответ

2 голосов
/ 18 февраля 2011
select substring_index(lower(@user_at_host), '@', -1);

или

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