如何转换我的CASE WHEN THEN语句?

时间:2009-11-03 08:45:11

标签: sql sql-server sql-server-2005 tsql

请帮我转换以下声明:

CASE 
  WHEN TITLE IS NOT NULL THEN 'A'
  WHEN LOCAL_TITLE IS NOT NULL THEN 'B'
  END
AS COMBINED_TITLE

这样的事情:

CASE 
  WHEN TITLE IS NOT NULL THEN COMBINED_TITLE=TITLE
  WHEN LOCAL_TITLE IS NOT NULL THEN COMBINED_TITLE=LOCAL_TITLE
  END
AS COMBINED_TITLE

提前完成 格雷格

3 个答案:

答案 0 :(得分:3)

您是否尝试在更新声明中使用它?实际上,您可以在此实例中取消CASE语句

UPDATE
    <table>
SET
    COMBINED_TITLE = COALESCE(TITLE, LOCAL_TITLE, COMBINED_TITLE)

COALESCE将在列表中找到第一个NON-NULL值

答案 1 :(得分:2)

ISNULL(TITLE,LOCAL_TITLE)AS COMBINED_TITLE

答案 2 :(得分:2)

我不确定你的意思,但是如果你想设置一个变量,你会这样做:

SELECT
    @CombinedTitle = CASE
        WHEN Title IS NOT NULL THEN Title
        WHEN Local_Title IS NOT NULL THEN Local_Title
    END
...

如果您仍想创建列Combined_Title但是要使用两个标题列中的值,则可以执行以下操作:

SELECT
    CASE
        WHEN Title IS NOT NULL THEN Title
        WHEN Local_Title IS NOT NULL THEN Local_Title
    END AS Combined_Title
...

另请参阅documentation on COALESCE,它甚至提到它与您的CASE语句相同(添加了ELSE NULL。)