我不确定为什么会发生这种情况,我已经尝试弄清楚它有一段时间了。
我有以下代码
SELECT (MAX(replace(replace(replace(`sku`,'PA1-',''),'TES-',''),'BOX-',''))+1) AS maxValue FROM `product` WHERE `sku` LIKE '%PA1-TES-BOX%'
这已经工作了一段时间,代码方面没有任何改变,我只能假设服务器的更改导致它返回以下错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
'maxValue FROM ``product`` WHERE ``sku`` LIKE '%PA1-TES-BOX%'
基本上,此 SQL 的构建是为了查找此 SKU 代码的前 3 部分并返回结尾 + 1,因此 002 将返回 003 以确保唯一的 SKU 代码。
也许替换功能已经改变,我不完全确定。
有人知道为什么会突然抛出上面的错误吗?
最佳答案
我没有看到明显的语法错误。但假设该数字是 sku 中最后一个连字符的项目,则代码可以更轻松地编写为:
select (substring_index(sku, '-', -1) + 1) as maxvalue
. . .
语法错误的一种可能是在 as
周围出现了不可打印的字符。
关于mysql - 替换函数出现 SQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41304187/