首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java / Derby -表名中的空白-如何转义?

问Java / Derby -表名中的空白-如何转义?
EN

Stack Overflow用户
提问于 2013-08-07 16:55:35
回答 1查看 2K关注 0票数 1

Java / Derby -表(列)名中的空白-如何转义?在MySQL数据库中,它只是通过 (重音)转义,但是如果我试图执行查询(Java ),如下所示:

代码语言:javascript
复制
CREATE TABLE `etc etc` (ID INT PRIMARY KEY, Title VARCHAR(12))

我知道错误:

java.sql.SQLSyntaxErrorException:第1行第14栏中的词汇错误。遇到:“‘”(96),后面是:"“。

有什么解决办法吗?

编辑:

非常感谢你的全面回答。我发现了有趣的东西(Java ):

创建这样的表是可以的:

代码语言:javascript
复制
CREATE TABLE "etc etc" (ID INT PRIMARY KEY, Title VARCHAR(12))

然后为了得到结果:

代码语言:javascript
复制
SELECT * FROM "etc etc"

但是,如果我像这样创建表(没有空格和引号):

代码语言:javascript
复制
CREATE TABLE etc_etc (ID INT PRIMARY KEY, Title VARCHAR(12))

然后得到这样的结果(比如双引号,它们并不是真正需要的):

代码语言:javascript
复制
SELECT * FROM "etc_etc"

我知道错误:

java.sql.SQLSyntaxErrorException:表/视图'etc_etc‘不存在。

因此,我的结论是,如果在创建表时使用了引号(如果名称包含空格并不重要),那么在获得结果的同时,还应该使用引号。反之亦然(当然,这里没有空白)。

我同意最好不要使用空格,而是使用_字符。但我喜欢MySQL上那些严肃的口音人物..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-07 17:35:13

SQL标准要求双引号引用保留字或使用标识符中不允许的字符的标识符。请注意,MySQL只是通过使用可怕的反勾来忽略标准--但它可以(在我看来应该是这样)配置为也允许标准双引号(就像所有其他数据库管理系统一样)。

所以你的声明应该是这样的:

代码语言:javascript
复制
CREATE TABLE "etc etc" (ID INT PRIMARY KEY, Title VARCHAR(12));

请注意,使用“引号标识符”(或“分隔标识符”)也使名称区分大小写。"etc etc"是一个不同于"Etc Etc"的表名。因此,在像上面这样创建表之后,您总是必须用小写写名称。

最好是完全避免引用标识符。因此,在您的例子中,您可能应该以etc_etc作为名称,使用下划线在视觉上分隔这两个单词。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18109284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档