加入不使用user表的information_schema.tables

时间:2012-12-12 09:52:14

标签: sql sql-server sql-server-2008

我在sql server中创建了一个表,其中包含数据库中表的名称和一些其他信息。当我运行此查询时

SELECT upper(TABLE_NAME) TABLE_NAME, ISNULL(syn_schema,'N') syn_schema, isnull(syn_data,'N') syn_data
FROM information_schema.tables 
left join sync_config on TABLE_NAME = TAB_NAME 
where table_type = 'BASE TABLE' 
ORDER BY TABLE_NAME

这将返回information_schema.tables中的数据,但不会返回sync_config表中的数据。 syn_schema和syn_data列位于sync_config表中。总而言之,join并不适用于两个表。我尝试将sync_config表中tab_name列的数据类型更改为VARCHAR中的SYSNAME。

由于

1 个答案:

答案 0 :(得分:1)

好吧,如果连接不起作用,则表明TABLE_NAME = TAB_NAME永远不会成立。检查表名称字段以查看它们是否确实包含您期望的内容。它们是否完全匹配,包括大小写(即使SQL在引用查询中的表时不区分大小写,表名的字符串比较可能 *区分大小写)?

除此之外,发布表格的结构和样本数据以获得更多帮助。

*感谢Martin Smith。