简体   繁体   English

SQL SERVER 2005如果是的话

[英]SQL SERVER 2005 IF ELSE

I am running following query. 我正在运行以下查询。

SELECT T1.C1, T2.C2..., 
IF( T1.C1<>T2.C1,"Changed","1") AS NewColumn
From T1 INNER JOIN T2
Where condition..

I am getting syntax error for IF statement. 我收到IF语句的语法错误。

Motive is to compare columns from two different tables, if not equal save as "Changed" in NewColumn of third table.. This is a Insert INTO query . 动机是比较两个不同表中的列,如果不相等,则在第三个表的NewColumn中保存为“已更改”。这是一个Insert INTO query

T-> Table
C->Column

You have to use CASE WHEN in this context. 在这种情况下,您必须使用CASE WHEN。

SELECT     T1.C1, 
           T2.C2..., 
           CASE WHEN T1.C1<>T2.C1 THEN 'Changed' ELSE '1' END AS NewColumn 
FROM       T1 
INNER JOIN T2 
WHERE      condition
SELECT T1.C1, T2.C2..., 
    CASE WHEN T1.C1<>T2.C1 THEN 'Changed' ELSE '1' END AS NewColumn 
From T1 INNER JOIN T2 ON ... 
Where ...

Others have already mentioned that you should use CASE WHEN ELSE END. 其他人已经提到你应该使用CASE WHEN ELSE END。 The difference between the two is that IF changes the flow of execution of your code - you can conditionally execute code depending on the result of your IF statement. 两者之间的区别在于IF改变了代码的执行流程 - 您可以根据IF语句的结果有条件地执行代码。 CASE doesn't change the execution flow - it simply lets you check a value, and then get a different result depending on the result. CASE不会更改执行流程 - 它只是让您检查一个值,然后根据结果获得不同的结果。

When you want to use condition checks inside the statement, you should use CASE WHEN 如果要在语句中使用条件检查,则应使用CASE WHEN

MSDN MSDN

But if you have multiline statements, the you can use IF ELSE clause 但是如果你有多行语句,你可以使用IF ELSE子句

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM