我正在尝试在NOT NULL
和bit(1)
的视图中获取列。我读过一些其他posts建议使用IF
,IFNULL
或CASE
来生成NOT NULL
列。这种方法的问题是你得到INT
或其他类型。我想要bit(1)
。
相反,我创建了一个正确返回我想要的bit(1)
列的函数,但它仍显示为NULL
。
#Suggestion from Alex - returns bit(1) NULL
CREATE FUNCTION `cast_to_boolean`(n integer) RETURNS bit(1)
BEGIN
RETURN IFNULL(n,0);
END
#Without IFNULL - returns bit(1) NULL
CREATE FUNCTION `cast_to_boolean2`(n integer) RETURNS bit(1)
BEGIN
RETURN IFNULL(n,0);
END
以下示例显示两种方法都不起作用:
CREATE
VIEW `sample` AS
select
cast_to_boolean(0) AS `Resuult 1`,
cast_to_boolean2(0) AS `Resuult 2`
#now display the proc
SHOW FULL COLUMNS FROM sample;
结果
答案 0 :(得分:0)
我不确定您的观点是什么,但只是返回BIT(1)
并且永远不会返回NULL,您可以将程序更改为:
CREATE FUNCTION `cast_to_boolean`(n integer) RETURNS bit(1)
BEGIN
RETURN IFNULL(n,0);
END