Mysql 如何在各种数据库中查找列名是否为保留关键字

Mysql 如何在各种数据库中查找列名是否为保留关键字,mysql,oracle,postgresql,h2,Mysql,Oracle,Postgresql,H2,我们有一个具有以下列名的遗留模式文件,希望了解如果我们将应用程序移植到h2、mysql、postgres或oracle,其中是否有任何列名会导致问题 e、 g我如何知道在下面列出的数据库中使用此选项是否合适。有什么好的工具可以对此进行初步检查吗 key when size type count from with 应该很容易得到保留字列表,并建立一个保留字表。以下是一些保留字列表: 甲骨文: SQL Server: PostgreSQL: MySQL: 这里有一个在线检查器:我不知道

我们有一个具有以下列名的遗留模式文件,希望了解如果我们将应用程序移植到h2、mysql、postgres或oracle,其中是否有任何列名会导致问题

e、 g我如何知道在下面列出的数据库中使用此选项是否合适。有什么好的工具可以对此进行初步检查吗

key
when
size
type
count
from
with

应该很容易得到保留字列表,并建立一个保留字表。以下是一些保留字列表:

  • 甲骨文:
  • SQL Server:
  • PostgreSQL:
  • MySQL:

这里有一个在线检查器:

我不知道有任何表,但如果您有表名和列名列表,则应该不难筛选它们

Oracle在其数据字典中有一个视图

您所要做的就是将表/列名与此匹配:只需将它们添加到临时表并与tis视图连接即可。如果您有查询结果,那么您有一个保留字


其他数据库也可能有这样的元数据。

最简单的方法就是尝试一下。您提到的所有数据库管理系统都是开源的,或者可以免费下载和试用。通过
CREATE TABLE
语句运行SQL脚本,看看会发生什么

在不参考实际SQL脚本的情况下问这个问题的问题是,一些解析器有各种类型的保留字。某些关键字可能会列为关键字,但仍可以用作列名,但可能不会出现在以后棘手的
SELECT
语句中。所以,最好尝试一下


我建议根据您给出的列表,它在大多数SQL系统中都不起作用。但您可以始终重复引用标识符,以避免出现关键词问题。(不过,您需要在ANSI模式下运行MySQL。)

DatabaseMetaData.getSQLKeywords()
应该返回此数据库中以逗号分隔的保留字列表。但是,此列表不包含ANSI SQL关键字,例如来自的
。但是,我不完全确定这是否真的包含所有数据库中的所有关键字


对于H2,关键字列表记录在下。

我实际上是在寻找在线检查器,感谢linkMySQL链接被破坏。如果您修复了它,我将删除此注释。的可能重复项