【发布时间】:2017-10-10 02:32:05
【问题描述】:
我有一个数据库,创建者决定使用 smallint 而不是 bit 来判断真/假场景。 False 用0 表示。 True 用 -1 表示。我想翻译这个,最好用比CASE 更简单的语法。有什么办法可以做这样的事情:
SELECT (column == -1) 'value_as_bool'
FROM myTable
这会(在大多数语言中)将该列翻译回真/假列...
【问题讨论】:
-
SQL 有 TRUE 和 FALSE 作为布尔值。
-
@jarlh 我知道,但创建表的人显然决定忽略这一点。所以我坚持使用
-1和0。而且有很多这样的列,所以如果我必须使用CASE,我的语法会很乱。 -
@Stephen 我更改了示例以使其更清楚我想要什么(希望如此)
-
@jarlh:TSQL 没有布尔数据类型,所以
SELECT (column = -1) AS value_as_bool FROM myTable失败并出现异常。 -
提示:使用适当的软件(MySQL、Oracle、DB2 等)和版本标记数据库问题很有帮助,例如
sql-server-2014。语法和功能的差异通常会影响答案。