IF EXISTS( SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'SiteInformation'
AND COLUMN_NAME = 'Number_Injectors')
BEGIN
SELECT [Number_Injectors] as Injectors
FROM [BLEND].[dbo].[SiteInformation]
END
ELSE
BEGIN
IF EXISTS( SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'SiteInformation'
AND COLUMN_NAME = 'Injectors')
BEGIN
SELECT [Injectors] as Injectors
FROM [BLEND].[dbo].[SiteInformation]
END
END
基本前提是我有 Visual Studio 代码,它引用来自不同服务器的名为 SiteInfomation 的表来收集有关某台机器的信息。事情是我发现其中一些服务器具有不同的列名(Injectors 和 Number_Injectors)。Visual Studio 中的数据变量 Injectors 正在寻找名为 Injectors 的列来收集信息。对于具有名为 Number_Injectors 而不是 Injectors 的列的 SiteInformation 表,返回的值为 NULL。Number_Injectors 和 Injectors 都是一个,除了名称之外是相同的。
我检查了 StackOverflow 并找到了一个关于如何检查列是否存在并创建上述代码的主题。代码的 if exist 部分工作正常,但如果我在不包含两个列名之一的服务器上使用此查询,则会收到错误消息。
示例:来自服务器 A 的 SiteInformation 表具有 Injectors 列。由于这段代码,它会给我一个错误:
SELECT [Number_Injectors] as Injectors
FROM [BLEND].[dbo].[SiteInformation]
同样,来自服务器 B 的 SiteInformation 表具有 Number_Injectors 列。由于这段代码,它会给我一个错误:
SELECT [Number_Injectors] as Injectors
FROM [BLEND].[dbo].[SiteInformation]
我对如何纠正它有点迷茫。尽管存在 if-exist 部分,但似乎两个 Select 查询同时运行。任何建议都会有所帮助。