在我的数据库表(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
您有多种选择:
TRUE
、FALSE
Boolean 值连接域表。使用(如本答案中所指出的)
SELECT CASE WHEN hide = 0 THEN FALSE ELSE TRUE END FROM
或者如果不支持Boolean:
SELECT CASE WHEN hide = 0 THEN 'false' ELSE 'true' END FROM
我找到了解决方案
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 这是另一个操作两个以上选项的选定值的方法。
你可以这样做:
SELECT id,name, REPLACE(REPLACE(hide,0,"false"),1,"true") AS hide FROM your-table
希望这可以帮助你。
如果您希望该列作为字符串值,则:
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
周围的引号被删除之外,其他都是一样的。
您可以在 select 子句中使用强制转换,例如:
SELECT id, name, CAST(hide AS BOOLEAN) FROM table_name;
我说案例陈述是错误的,但这可能是一个很好的解决方案。 如果您选择使用
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
在 Postgres 11 中我必须这样做:
type
是 int
SELECT type,
CASE
WHEN type = 1 THEN 'todo'
ELSE 'event'
END as type_s
from calendar_items;
替换 select 语句本身中的值
(CASE WHEN Mobile LIKE '966%' THEN (select REPLACE(CAST(Mobile AS nvarchar(MAX)),'966','0')) ELSE Mobile END)