我有下一个查询,但不起作用:
SELECT case BasePak.SomeFunction(333,4,5555) when true then 1 else 0 end
from dual
BasePak.SomeFunction(333,4,5555)返回布尔值。如何将结果(true,false)转换为数字或字符串?
我尝试过投射功能但没有成功。
有没有办法将布尔值转换为int或string?
答案 0 :(得分:1)
SQL没有布尔数据类型,但PL / SQL有。在PL / SQL中,您有更多选择。你可以:
或者你可以直接使用这样的代码:
string_var := CASE
WHEN boolean_var
THEN 'True'
WHEN NOT boolean_var -- or ELSE, depending on what you want
THEN 'False'
END;
在您的情况下,我要么更改原始函数,要么编写包装函数并直接从SQL代码中使用它。
答案 1 :(得分:-1)
据我所知,SQL并不包含布尔数据类型。 Bit通常用于表示true(1)或false(0)。你确定你的函数没有返回NULL值,因为这需要以不同的方式处理
请改为尝试:
SELECT case when BasePak.SomeFunction(333,4,5555) = 1 then 'true' else 'False' end
from dual