是否可以在 SQL 中将布尔值转换为字符串?

新手上路,请多包涵

我有一个名为 live_in_city 的列,它提供了一个布尔值。不过,我想将其转换为字符串。

我尝试使用 cast((live_in_city) as varchar(256)) ,但它说不能将布尔类型转换为字符变化。

还有另一种方法吗?

原文由 user8659376 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.3k
2 个回答

尝试使用下面。在这里,您可以将值分配给 1 和 0 。然后转换它。

 Select
    Cast(Case
            When live_in_city=1 Then 'True'
            ELse 'False' END
        AS Varchar(256))
    from #t

如果 live_in_city 是一个数字(整数,数字,…),则上述方法有效。

对于真正的 boolean 列,应使用以下内容:

 Select Case
         When live_in_city Then 'True'
         ELse 'False'
       END
from the_table;

原文由 Raj 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 Postgres 9.5 中转换为 TEXT 对我来说效果很好:

 # select (0 = 0)::TEXT, (0 = 1)::TEXT;
 text | text
------+-------
 true | false
(1 row)

而且您的代码也可以正常工作:

 # SELECT cast((1 = 1) as varchar(256)), cast((1 = 0) as varchar(256));
 varchar | varchar
---------+---------
 true    | false
(1 row)

注意: (1 = 1)(1 = 0) 是所有可能表达式的占位符,返回 truefalse

原文由 clemens 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进