MySQL - 视图中的NOT NULL位(1)列

时间:2015-05-21 22:07:36

标签: mysql

我正在尝试在NOT NULLbit(1)的视图中获取列。我读过一些其他posts建议使用IFIFNULLCASE来生成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;

结果

enter image description here

1 个答案:

答案 0 :(得分:0)

我不确定您的观点是什么,但只是返回BIT(1)并且永远不会返回NULL,您可以将程序更改为:

CREATE FUNCTION `cast_to_boolean`(n integer) RETURNS bit(1)
BEGIN
RETURN IFNULL(n,0);
END