我正在开发一个可以处理多个数据库服务器的应用程序,比如"MySQL"和"MS SQL Server".

我想使用一个通用查询来获取特定数据库的表名,该查询应该适用于所有数据库类型.我试过以下几点:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'

但它给出了特定服务器的所有数据库的表名,但我只想得到所选数据库的表名.如何限制此查询以获取特定数据库的表?

推荐答案

可能是因为不同的sql dbms处理模式的方式不同.

试试下面的方法

对于SQL Server:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG='dbName'

对于MySQL:

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='dbName' 

对于甲骨文来说,我认为相当于使用DBA_TABLES.

Sql相关问答推荐

根据内容确定要插入的列

在数据分区内执行确定

使用SQL/R循环查找邻居

如何以"% m—% d"格式对生日列表进行排序,以查找与今天最近的日期?

有没有办法在每次计算每一行的数据时更新2个值?

从自定义日期和时间开始,每月具有给定状态的公司数量

如何利用单列历史SQLsnowflake获得合并结果

使用Kotlin Exposed SQL DSL Select 多个值并排序

使用DatePart函数对日期时间值进行分组

在Athena中使用regexp提取括号前的字符串值

PostgreSQL:查找继承表中的特定记录属于哪个表

在VB.NET中如何在MS Access数据库中创建SQL项目历史库存卡

如何在T-SQL中编写row_number的WHERE子句?

Select 最频繁的值以及分组依据

SQL 中的第一个值和倒数第二个值

汇总具有连续日期范围的行

Oracle PL/SQL长期运行问题

如何在插入时将字符串'03-January-2023'转换为日期时间

查询以查找今天和昨天的数据之间的差异以及伪列

SQL - 使用子查询返回多行的 LIKE 命令