首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >确定一个单词是否是Apache中的保留字

确定一个单词是否是Apache中的保留字
EN

Stack Overflow用户
提问于 2016-01-25 20:49:00
回答 1查看 679关注 0票数 2

是否有一种方法仅转义保留字的列?

例如,我想使用java生成以下语句:

代码语言:javascript
代码运行次数:0
运行
复制
create table person(id int, name varchar(255), "year" int);

注意到“年份”必须转义,因为它是一个保留的单词?是否有方法确定字符串是否为保留字?

我之所以不直接转义所有列,是因为我更希望查询如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
select id, name, "year" from person

而不是这样:

代码语言:javascript
代码运行次数:0
运行
复制
select "id", "name", "year" from person
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-26 10:33:45

从一般JDBC的角度来看,有一种方法可以使用SQL:2003关键字列表(您需要自己获得)+ DatabaseMetaData.getSQLKeywords()的结果来确定关键字。

检索此数据库的所有SQL关键字的逗号分隔列表,这些关键字也不是SQL:2003关键字。

但是,这取决于JDBC驱动程序中的关键字列表是完整的和最新的,情况并不总是如此。我不知道德比的情况是否如此。如果您正在编写通用软件,最好总是引用,以避免麻烦。

有计划在JDBC4.3中包含引用对象名称的功能(如果给定一个字符串,它将按原样返回字符串(不需要引用),必要时以引号引用,如果对象名称无效或不可能引用,则抛出SQLException )。这不是最终的IIRC,然后需要等待驱动程序供应商来实现它。

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

https://stackoverflow.com/questions/35002072

复制
相关文章

相似问题

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