3

我在 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。

谢谢

4

1 回答 1

1

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

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

*谢谢马丁史密斯。

于 2012-12-12T09:57:11.443 回答