前几天我向question询问了我的问题,建议我使用CONCAT_WS功能。我在我的本地mysql数据库上使用CONCAT_WS,它运行正常。但它不适用于服务器(托管的应用程序)并生成以下错误。
功能测试.CONCAT_WS不存在
错误字符串中的test
是服务器上的数据库名称。
我的查询是这样的:
SELECT * FROM patient WHERE CONCAT_WS (',', LastName,FirstName,BirthDate ) NOT IN ('Abdul,Quddus,2000-09-30','Wasim,Akram,1993-09-12');
有人可以告诉我这个问题或建议我在上面的链接问题中提出另一个解决方案吗?
由于
答案 0 :(得分:4)
解决问题的最简单方法是删除函数名和括号之间的空格,即CONCAT_WS(...)
而不是CONCAT_WS (...)
。
来自MySQL Manual:
默认情况下,必须没有 函数名称和。之间的空格 跟随它的括号。这个 帮助MySQL解析器区分 函数调用和引用之间 到发生的表或列 与函数同名。
...
你可以告诉MySQL服务器 接受函数名后面的空格 用它开始吧 --sql-mode = IGNORE_SPACE选项。
此外,此行为取决于MySQL版本,这就是为什么它在一台服务器上工作而不能在另一台服务器上工作的原因,请参考“Function Name Parsing and Resolution”手册页:
受影响的功能名称数量 由IGNORE_SPACE减少 显着地在MySQL 5.1.13中 约200至约30。