【问题标题】:SQL change Result by caseSQL 更改结果(按大小写)
【发布时间】:2012-07-04 05:50:16
【问题描述】:

所以我有这段代码,它工作正常

SELECT NAME, 
       Country, 
       NORMAL_STATE, 
       CURRENT_STATE
FROM SOMS_TABLE
WHERE SOMS_TABLE.NAME LIKE 'AR%' AND 
      NORMAL_STATE <> CURRENT_STATE
ORDER BY SOMS_TABLE.Country ASC

输出是


但我想将 1 和 0 更改为 OPEN & CLOSED


谢谢

【问题讨论】:

  • MySQL、SQL Server、sqlite,你能选择一个 RDBMS 吗?

标签: mysql sql-server sqlite sql


【解决方案1】:
select name,
    Country,
    case NORMAL_STATE
        when 1 then 'OPEN'
        when 0 then 'CLOSED'
        else 'UNKNOWN'
    end as NORMAL_STATE,
    case CURRENT_STATE
        when 1 then 'OPEN'
        when 0 then 'CLOSED'
        else 'UNKNOWN'
    end as CURRENT_STATE
from SOMS_TABLE
where name like 'AR%'
    and NORMAL_STATE <> CURRENT_STATE
order by Country 

【讨论】:

  • 感谢您提供更多选择,非常简单
【解决方案2】:

使用这个

CASE NORMAL_STATE
    WHEN 1 THEN 'OPEN'
    WHEN 2 THEN 'CLOSED'
END AS NORMAL_STATE

CURRENT_STATE 也是如此

【讨论】:

    【解决方案3】:

    你可以使用 IF 语句

    SELECT NAME, Country, 
           IF(NORMAL_STATE > 0,'OPEN','CLOSED'), 
           IF(CURRENT_STATE > 0,'OPEN','CLOSED') 
    FROM SOMS_TABLE 
    WHERE SOMS_TABLE.NAME LIKE 'AR%' AND 
          NORMAL_STATE <> CURRENT_STATE 
    ORDER BY SOMS_TABLE.Country ASC
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多