如何为java.sql.DatabaseMetaData#getTables创建不区分大小写的模式?

如何为java.sql.DatabaseMetaData#getTables创建不区分大小写的模式?,java,sql,case-insensitive,Java,Sql,Case Insensitive,我使用的是java.sql.DatabaseMetaData#getTablesper 如果我想查找一个表并忽略大小写,tableNamePattern应该使用什么?这种模式格式记录在哪里 我可以在这里制作一个与“loinc”、“loinc”或“loinc”匹配的图案吗 我可以在这里制作一个与“loinc”、“loinc”或“loinc”匹配的图案吗 “Loinc” 通常:否。JDBCAPI不提供对特定表执行不区分大小写查询的方法 在实践中,这通常不是问题,因为大多数DBMS对表名只使用大写。A

我使用的是
java.sql.DatabaseMetaData#getTables
per

如果我想查找一个表并忽略大小写,
tableNamePattern
应该使用什么?这种模式格式记录在哪里

我可以在这里制作一个与“loinc”、“loinc”或“loinc”匹配的图案吗

我可以在这里制作一个与“loinc”、“loinc”或“loinc”匹配的图案吗 “Loinc”

通常:否。JDBCAPI不提供对特定表执行不区分大小写查询的方法

在实践中,这通常不是问题,因为大多数DBMS对表名只使用大写。ANSI SQL标准要求SQL查询中的表名转换为大写,除非它们被引用(使用
)。由于不断引用非常繁琐,大多数开发人员和大多数软件都使用大写的表名。因此,在大多数情况下,您可以假设表名是大写的,并使用大写的模式


如果确实需要不区分大小写的查询,可以指定
tableNamePattern
null
(这意味着不按名称过滤),然后迭代所有结果并检查Java代码中的表名。请注意,对于包含大量表的数据库,这可能会很慢。

ILIKE
不区分大小写。或者,如果使用
lower()
,则使用
lower()“那就不匹配了。还要注意,上面显示的查询是由
getTables
生成的。我可以控制的唯一变量是传递给
getTables
的参数,您可以对大小和大小使用
lower()
。请注意,我将其作为评论发布,因为这只是一个建议,而不是完整的答案。我不认为像
这样的
中有任何通配符或大小写不敏感的修饰符。所以不,我认为你不能,你需要一个带标志的完整正则表达式。一个选项是直接查询
信息\u模式