mysql - 替换函数出现 SQL 错误

标签 mysql sql

我不确定为什么会发生这种情况,我已经尝试弄清楚它有一段时间了。

我有以下代码

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/

相关文章:

sql - 在 SQL 中查询经纬度矩形的最有效方法

c# - 使用 block 在现有 SqlConnection 中创建具有新 SqlConnection 的事务范围

mysql - Rails 查询数组中的 'comma separated string'

php - 简单的网络通用本地化/翻译后端(使用 mysql)?

mysql - mysql自增问题

sql - 谁被叫了?

php - 为网站中的不同页面建立单独的数据库是一个好习惯吗?

jquery - 使用jQuery在数据表中动态添加列

sql - 编写sql server查询,查看一张表链接了多少个表

sql - 测试函数的多个值