MySQL表名中的特殊字符

pea*_*337 13 mysql sql

我创建了一个表如下:

CREATE TABLE IF NOT EXISTS 'e!' (
`aa` int(11) unsigned NOT NULL auto_increment,
`showName` TEXT NOT NULL default '',
`startDateTime` DATETIME NOT NULL default '',
`endDateTime` DATETIME NOT NULL default '',
PRIMARY KEY  (`aa`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

然后尝试插入查询:

INSERT INTO e! (showname, startDateTime, endDateTime) VALUES('E! News ', '2012-05-03 19:00:00', '2012-05-03 20:00:00')
Run Code Online (Sandbox Code Playgroud)

而且由于!表名中的错误,我假设它!是mysql中的一个特殊字符.我试图逃避它,但查询仍然失败.

所以,我能有特殊字符,如!&在表名?如果是,那么我可能不得不以某种方式对它们进行编码?

谢谢.

dec*_*eze 19

用后面的勾号引用你的模糊或"特殊"表名:

INSERT INTO `e!` ...
Run Code Online (Sandbox Code Playgroud)

或者更好的是,不要在表名中使用特殊字符来避免此类问题.


Chr*_*rga 12

根据文档,你不能:

标识符在内部转换为Unicode.它们可能包含以下字符:

  • 不带引号的标识符中允许的字符:ASCII:[0-9,az,AZ $ _](基本拉丁字母,数字0-9,美元,下划线)扩展:U + 0080 .. U + FFFF

  • 带引号的标识符中允许的字符包括完整的Unicode基本多语言平面(BMP),但U + 0000除外:ASCII:U + 0001 .. U + 007F扩展:U + 0080 .. U + FFFF

资料来源:http://dev.mysql.com/doc/refman/5.5/en/identifiers.html