SQL Server存储过程:根据条件在表列中追加值

时间:2015-11-02 10:07:07

标签: sql sql-server stored-procedures

我有一个包含50列的临时表。最后一列用于存储先前49列的验证结果。我想为最后一列中的所有列附加验证结果。即,在这49列中,有25列(例如col1,col2,col3 ... col25)是强制性的。现在我想在最后一列中添加错误消息(例如,如果任何必需列为空,则col1是必需的,col2是必需的,col3是必需的,col3是必需的)。

如何在存储过程中执行此操作?

2 个答案:

答案 0 :(得分:1)

这听起来不是一个聪明的主意。如果第1列到第25列是必需的,那么您应该考虑将它们声明为NOT NULL。

但是,如果您确实需要一个向ValidationResults列添加错误消息的查询,请尝试以下操作:

UPDATE YourTable SET ValidationResults = 
CASE
    WHEN (col1 is null) or (col2 is null) or (col3 is null) or (col4 is null)  -- etc
    THEN 'Your error message'
    ELSE ''
END

或只是

UPDATE YourTable SET ValidationResults = 'Your error message'
WHERE (col1 is null) or (col2 is null) or (col3 is null) or (col4 is null)  -- etc

(取决于您是否需要清除以前的任何错误消息)。

答案 1 :(得分:1)

请参阅此准则。 。

Update Table_Name
SET
[Column_Status] = 
CASE 
    WHEN Column_1 IS NULL OR Column_1 = '' 
    THEN 'Column_1 is mandatory, ' ELSE '' END +
CASE 
    WHEN Column_2 IS NULL OR Column_2 = '' 
    THEN 'Column_2 is mandatory, ' ELSE '' END +