什么是最好的方式来转换一个int或空来布尔的价值在SQL query?
-
05-07-2019 - |
题
什么是最好的方式来转换一个int或空来布尔的价值在SQL query,使得:
- 任何非空值 真的 在结果
- 任何空值 假 在结果
解决方案
我的知识(正确的我,如果我错误),也没有一概念的字面boolean values in SQL.你可以拥有的表情评估对布尔的价值,但不能输出。
这就是说,您可以使用的情况下,当产生一个价值可以使用在一个比较:
SELECT
CASE WHEN ValueColumn IS NULL THEN 'FALSE' ELSE 'TRUE' END BooleanOutput
FROM
table
其他提示
没有必要使用的情况下...当:
select (column_name is not null) as result from table_name;
返回1的所有领域not NULL和0的所有领域,空,这是尽可能靠近你可以得到布尔在SQL。
SELECT
CASE
WHEN thevalue IS NULL THEN 0
ELSE 1
END AS newVal
FROM .... (rest of select)
我认为它是这样的
实际上,该函数,可能需要的时候发IS NULL然后0
你可能想要做一个转换(位,值)的结果。因为东西SQL会返回一个错误的价值不是一个布尔。
isnull(column - column + 1, 0) != 0
在Oracle,假定使用0为虚假和1为真:-
SELECT DECODE( col, NULL, 0, 1) FROM ...
你也可以写入这个情况下使用的语法,但上述习惯在Oracle。解码是一个有点像一个开关/情况;如果col is NULL然后返回0,否则1中。
最短的一个,我知道为Oracle:
SELECT NVL2(nullableColumn, 1, 0) FROM someTable
NVL2(value, ifNotNull, ifNull)
返回 ifNotNull
如果的 value
不是空的, ifNull
否则。
通常当使用1中,这意味着真正和他在其他情况。
所以:
SELECT IsDefault = CASE WHEN IsDefault = 1 THEN 'true' ELSE 'false' END
FROM table
不隶属于 StackOverflow