SQL如何替换select返回的值?

问题描述 投票:0回答:8

在我的数据库表(MySQL)中,有一列带有

1
0
分别代表
true
false

但是在

SELECT
中,我需要将其替换为
true
false
才能在 GridView 中打印。

如何通过

SELECT
查询来执行此操作?

在我当前的表中:

 id   |  name    |  hide
  1   |  Paul    |  1
  2   |  John    |  0
  3   |  Jessica |  1

我需要它来显示:

  id  |  name    |  hide
  1   |  Paul    |  true
  2   |  John    |  false
  3   |  Jessica |  true
mysql sql select
8个回答
87
投票

您有多种选择:

  1. 使用
    TRUE
    FALSE
    Boolean 值连接域表。
  2. 使用(如本答案中所指出的

    SELECT CASE WHEN hide = 0 THEN FALSE ELSE TRUE END FROM
    

    或者如果不支持Boolean

    SELECT CASE WHEN hide = 0 THEN 'false' ELSE 'true' END FROM
    

53
投票

我找到了解决方案

   SELECT 
   CASE status
      WHEN 'VS' THEN 'validated by subsidiary'
      WHEN 'NA' THEN 'not acceptable'
      WHEN 'D'  THEN 'delisted'
      ELSE 'validated'
   END AS STATUS
   FROM SUPP_STATUS

这是使用CASE 这是另一个操作两个以上选项的选定值的方法。


34
投票

你可以这样做:

SELECT id,name, REPLACE(REPLACE(hide,0,"false"),1,"true") AS hide FROM your-table

希望这可以帮助你。


25
投票

如果您希望该列作为字符串值,则:

SELECT id, name, CASE WHEN hide = 0 THEN 'false' ELSE 'true' END AS hide
  FROM anonymous_table

如果 DBMS 支持 BOOLEAN,则可以使用:

SELECT id, name, CASE WHEN hide = 0 THEN false ELSE true END AS hide
  FROM anonymous_table

除了名称

false
true
周围的引号被删除之外,其他都是一样的。


8
投票

您可以在 select 子句中使用强制转换,例如:

SELECT id, name, CAST(hide AS BOOLEAN) FROM table_name;

2
投票

我说案例陈述是错误的,但这可能是一个很好的解决方案。 如果您选择使用

CASE
语句,则必须确保至少有一个
CASE
条件匹配。否则,您需要定义一个错误处理程序来捕获错误。请记住,您不必使用
IF
语句来执行此操作。

SELECT if(hide = 0,FALSE,TRUE) col FROM tbl; #for BOOLEAN Value return

SELECT if(hide = 0,'FALSE','TRUE') col FROM tbl; #for string Value return

0
投票

在 Postgres 11 中我必须这样做:

type
int

SELECT type,
CASE 
    WHEN type = 1 THEN 'todo'
    ELSE 'event'
END as type_s
from calendar_items;

-2
投票

替换 select 语句本身中的值

(CASE WHEN Mobile LIKE '966%' THEN (select REPLACE(CAST(Mobile AS nvarchar(MAX)),'966','0')) ELSE Mobile END)
© www.soinside.com 2019 - 2024. All rights reserved.