Использование `CAST (1 AS BIT)` в представлении - PullRequest
0 голосов
/ 28 октября 2019

MySQL noob здесь, исходя из многолетнего опыта работы с MS SQL-сервером.
Я создаю представление со столбцом BIT, который, как я понимаю, является правильным типом для логических столбцов / да-нет.

Значение BIT вычисляется с помощью простого встроенного оператора IF.

CREATE VIEW view2 AS
SELECT
    t.column2 ,
    IF ( t.column2 IS NULL ,
         CAST ( 1 AS BIT ) ,
         CAST ( 0 AS BIT ) ) AS isColumn2Null
FROM table2 t ;

Но когда я пытаюсь выполнить это, я получаю ошибку:

Incorrect parameters in the call to stored function `CAST`

Почему MySQL выдает здесь ошибку хранимой функции?
Считает ли MySQL, что я определяю хранимую функцию?
Что происходит?

Очевидно, тип BIT в MySQL работает иначе, чем SQL-Server.
Я пытался CAST ( 1 AS BIT ( 1 ) ), но это просто дало общий syntax error без подробностей.

1 Ответ

1 голос
/ 28 октября 2019

CAST() невозможно преобразовать в BIT.

Вы можете эмулировать поведение, рассматривая целое число как условие.

В основном измените это:

CAST ( myval AS BIT )

Кому:

IF(myval, 1, 0)
...