如何解决获取SQL Server数据库中除某些选定表之外的所有表?
我希望显示mySQL Server数据库中所有表的名称,但三个选定的表除外。在MySQL中,我使用了类似的查询:
SHOW TABLES FROM " + self.databaseName + " WHERE tables_in_" + self.databaseName + " NOT LIKE 'shots' AND tables_in_" + self.databaseName + " NOT LIKE 'conditions' AND tables_in_" + self.databaseName + " NOT LIKE 'analysis'"
SQL Server中是否有等效项?
解决方法
使用系统表:
SELECT s.[name] AS SchemaName,t.[name] AS TableName
FROM sys.schemas s
JOIN sys.tables t ON s.schema_id = t.schema_id
WHERE t.[name] NOT IN (N'Table1',N'Table2','Table3');
您也可以使用INFORMATION_SCHEMA
对象,但是documentation确实建议您使用sys
对象:
SELECT T.TABLE_SCHEMA,T.TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES T
WHERE T.TABLE_NAME NOT IN (N'Table1','Table3')
AND T.TABLE_TYPE = N'BASE TABLE';
请注意,如果您要省略的表位于特定的架构中,并且您具有不希望排除的不同架构中的相同名称的对象,则您需要在{中使用AND
子句{1}}:
WHERE
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。