我有一个 T-Sql 脚本,该脚本的一部分检查表中是否存在某个列。如果是这样,我希望它执行一个例程……如果不是,我希望它绕过这个例程。我的代码如下所示:
IF COL_LENGTH('Database_Name.dbo.Table_Name', 'Column_Name1') IS NOT NULL
BEGIN
UPDATE Table_Name
SET Column_Name2 = (SELECT Column_Name3 FROM Table_Name2
WHERE Column_Name4 = 'Some Value')
WHERE Column_Name5 IS NULL;
UPDATE Table_Name
SET Column_Name6 = Column_Name1
WHERE Column_Name6 IS NULL;
END
我的问题是,即使 Column_Name1 的 COL_LENGTH 为空(意味着它不存在),我仍然收到一条错误消息,告诉我来自 IF 语句中的第二个 UPDATE 语句的“无效的列名 'Column_Name1'”。由于某种原因,即使条件为 FALSE 并且我不知道为什么,仍在评估此 IF 条件。