由于表名'CASE'导致MySQL查询中的问题

Posted

技术标签:

【中文标题】由于表名\'CASE\'导致MySQL查询中的问题【英文标题】:issue in MySQL query due Table name 'CASE'由于表名'CASE'导致MySQL查询中的问题 【发布时间】:2020-09-03 13:20:44 【问题描述】:

我从代码峡谷安装了一个脚本,其中有一个名为 Case 的表。

当我尝试执行查询时

SELECT COUNT(*) as total FROM case

它显示以下错误

Static analysis:

1 errors were found during analysis.

Unexpected end of CASE expression (near "" at position 0)
SQL query: Documentation

SELECT COUNT(*) as total FROM case

mysql said: Documentation

#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 'case' at line 1

我知道 case 是 MYSQL 的保留字,但现在我该如何解决这个问题,因为我无法更改表名,也无法将其修改为整个脚本。

【问题讨论】:

case 是保留字,完整列表见en.wikipedia.org/wiki/SQL_reserved_words。 更改表名 我已经提到,由于我是从网站上购买的,所以无法更改。 【参考方案1】:

case 是一个非常糟糕的表名或列名。这显然是一个 SQL 关键字。但是,如果您无法修复它,请使用反引号:

select count(*)
from `CASE`

转义名称并告诉 MySQL 将其视为某物的名称,而不是关键字。

我鼓励您弄清楚如何修复数据库。我通常以复数形式命名表——例如cases。首先,它们复数,因为它们几乎总是有不止一行。副作用是复数与更少的关键字发生冲突。

【讨论】:

以上是关于由于表名'CASE'导致MySQL查询中的问题的主要内容,如果未能解决你的问题,请参考以下文章

mysql表名怎么配置不区分大小写?

linux下mysql表名大小写问题

mysql问题小结

Mycat连接数据库之后导致表名全小写的问题分析研究

linux配置MySql表名不区分大小写

由于在 MySQL 中使用保留字作为表名或列名导致的语法错误