mysql执行代码时抛出错误

vsmadaxz  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(341)

这是我的sql代码:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'COALESCE(MAX(CASE WHEN delc = ''',
      delc,
      ''' then ''y'' end),''n'') AS ',
      delc
    )
  ) INTO @sql
FROM inputr;

SET @sql = CONCAT('SELECT tem, ', @sql, ' 
                  FROM inputr 
                  GROUP BY tem');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

当我执行这个命令的时候 mysql workbench 6.3 ,我得到 error code 1064 问题是什么?这是错误:

PREPARE stmt FROM @sql  Error Code: 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 'plan,COALESCE(MAX(CASE WHEN delc = 'sil' then 'y' end),'n') AS sil,COALE' at line 1    0.000 sec
lh80um4z

lh80um4z1#

您的问题是由于最终查询的结构造成的。我猜一个或多个 delc 有单引号或反斜杠。
最简单的解决方案就是通过只接受“普通”名称来消除这些问题

select . . .
from inputstr
where delc regexp '^[a-zA-Z0-9_]+$'

这些字符被允许作为标识符和字符串,因此代码应该可以工作。

相关问题