反击上没有错误。
DB [XXX]> create temporary table `123456e6` (`id` char (8));
Query OK, 0 rows affected (0.03 sec)
不使用反引号时出错。
DB [XXX]> create temporary table 123451e6 (`id` char (8));
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '123451e6 (`id` char (8))' at line 1
我的标识符123451e6根据页面here有效,并且不是保留字或带空格或包含任何特殊字符。
答案 0 :(得分:4)
您遇到了一个只有"数字的微妙案例"规则:
标识符可以以数字开头,但除非引用可能不仅仅由数字组成。
e
字符用于数字的科学记数法,MySQL将123451e6解释为" 123451 * 10 6 "或123451000000.任何其他字母,但" e"会导致字符串遵守"不仅仅是数字"规则,可以不加引用。 E.g:
MariaDB [db]> create temporary table 123451f6 (`id` char (8));
Query OK, 0 rows affected (0.02 sec)
答案 1 :(得分:1)
它无效,因为12345e6
形式的某些内容在此示例中评估为数字,特别是12345 * 10 6 。因此,您必须明确地将其标记为字符串。