Java / Derby -表(列)名中的空白-如何转义?在MySQL数据库中,它只是通过 (重音)转义,但是如果我试图执行查询(Java ),如下所示:
CREATE TABLE `etc etc` (ID INT PRIMARY KEY, Title VARCHAR(12))我知道错误:
java.sql.SQLSyntaxErrorException:第1行第14栏中的词汇错误。遇到:“‘”(96),后面是:"“。
有什么解决办法吗?
编辑:
非常感谢你的全面回答。我发现了有趣的东西(Java ):
创建这样的表是可以的:
CREATE TABLE "etc etc" (ID INT PRIMARY KEY, Title VARCHAR(12))然后为了得到结果:
SELECT * FROM "etc etc"但是,如果我像这样创建表(没有空格和引号):
CREATE TABLE etc_etc (ID INT PRIMARY KEY, Title VARCHAR(12))然后得到这样的结果(比如双引号,它们并不是真正需要的):
SELECT * FROM "etc_etc"我知道错误:
java.sql.SQLSyntaxErrorException:表/视图'etc_etc‘不存在。
因此,我的结论是,如果在创建表时使用了引号(如果名称包含空格并不重要),那么在获得结果的同时,还应该使用引号。反之亦然(当然,这里没有空白)。
我同意最好不要使用空格,而是使用_字符。但我喜欢MySQL上那些严肃的口音人物..。
发布于 2013-08-07 17:35:13
SQL标准要求双引号引用保留字或使用标识符中不允许的字符的标识符。请注意,MySQL只是通过使用可怕的反勾来忽略标准--但它可以(在我看来应该是这样)配置为也允许标准双引号(就像所有其他数据库管理系统一样)。
所以你的声明应该是这样的:
CREATE TABLE "etc etc" (ID INT PRIMARY KEY, Title VARCHAR(12));请注意,使用“引号标识符”(或“分隔标识符”)也使名称区分大小写。"etc etc"是一个不同于"Etc Etc"的表名。因此,在像上面这样创建表之后,您总是必须用小写写名称。
最好是完全避免引用标识符。因此,在您的例子中,您可能应该以etc_etc作为名称,使用下划线在视觉上分隔这两个单词。
https://stackoverflow.com/questions/18109284
复制相似问题