如何为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模式
。