【问题标题】:Conditional value replacement in SQL ServerSQL Server 中的条件值替换
【发布时间】:2012-01-17 21:01:22
【问题描述】:

我有一个有几列的表。一列的值为01。我想编写一个查询,如果值为0,则返回“Hello”,如果值为1,则返回“Bye”。 编写此查询的适当方式是什么?

【问题讨论】:

    标签: sql sql-server select if-statement case-statement


    【解决方案1】:

    如果您选择多列/所有列,请尝试以下操作:

    SELECT Column1, Column2,  -- Put other column name here 
            CASE TargetColumnName
             WHEN 0 THEN 'Hello'
             WHEN 1 THEN 'Bye'
           END AS TargetAliasColumnName
    FROM   YourTableName 
    

    【讨论】:

    • 名称“TargetColumnName”是 SQL 的固有名称,因此 SQL 知道它指的是“Column1, Column2, ...”吗?
    • 您可以写出您想要的列名,说您的列名是 Column2 而不是 TargetColumnName - 我在答案中写了 TargetColumnName 因为您的 SELECT 语句中可能有很多列名,您需要指定您的SQL 中“CASE”表达式中所需的列名,希望你明白我的意思。谢谢
    • 所以您说“TargetColumnName”是 Column1、Column2 之一的占位符。我以为您正在为多个列进行编码,并为所有选定的列执行条件替换任务,而不仅仅是一个。如果是这种情况,那么在 Martin Smith 的答案中显示的单个列上的操作与您似乎建议您的代码将执行的多个列上的操作有什么区别?
    • 您可以在SELECT 语句中选择多列,并且可以在CASE 语句中使用一列(在我的回答中),在马丁史密斯的回答中,他使用了SELECT 中的一列并使用了CASE 声明中该列的值 - 希望你明白我的意思,谢谢。
    【解决方案2】:

    使用CASE expression

    SELECT CASE YourCol
             WHEN 0 THEN 'Hello'
             WHEN 1 THEN 'Bye'
           END AS SomeAlias
    FROM   YourTable  
    

    【讨论】:

    • 请帮帮我。如果我想选择几列。例如选择 ID,YourCol,Name。(YourCol 是选择案例表达式的那一列)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2016-07-11
    • 1970-01-01
    • 2022-11-22
    相关资源
    最近更新 更多