MySQL: функция CONCAT_WS работает на локальном компьютере, но не на сервере

Несколько дней назад я задал вопрос о своей проблеме, и мне посоветовали использовать функцию CONCAT_WS. Я использую CONCAT_WS в моей локальной базе данных MySQL, и она работает отлично. Но он не работает на сервере (приложение размещено) и генерирует следующую ошибку.

FUNCTION test.CONCAT_WS не существует

Вот test в строке ошибки указано имя моей базы данных на сервере.

Мой запрос таков:

SELECT * FROM patient WHERE CONCAT_WS (',', LastName,FirstName,BirthDate ) NOT IN ('Abdul,Quddus,2000-09-30','Wasim,Akram,1993-09-12');

Может кто-нибудь сказать мне проблему или предложить мне другое решение, заданное в связанном вопросе выше?

Спасибо

1 ответ

Решение

Самый простой способ исправить это - удалить пробел между именем функции и круглыми скобками, т.е. CONCAT_WS(...) вместо CONCAT_WS (...),

Из руководства MySQL:

По умолчанию не должно быть пробелов между именем функции и круглыми скобками после него. Это помогает анализатору MySQL различать вызовы функций и ссылки на таблицы или столбцы, имена которых совпадают с именами функций.

...

Вы можете указать серверу MySQL принимать пробелы после имен функций, запустив его с параметром --sql-mode=IGNORE_SPACE.

Кроме того, это поведение зависит от версии MySQL, поэтому оно работает на одном сервере и не работает на другом, цитата из справочной страницы " Разбор и разрешение имен функций":

Количество имен функций, затронутых IGNORE_SPACE, было значительно уменьшено в MySQL 5.1.13 с примерно 200 до примерно 30.

Другие вопросы по тегам