Как я могу привести int к биту в MySQL 5.1?
Я перехожу с SQL Server на MySQL 5.1 и, похоже, споткнулся, пытаясь создать таблицу с помощью инструкции select, чтобы столбец был немного.
В идеале будет работать следующее:
CREATE TABLE myNewTable AS
SELECT cast(myIntThatIsZeroOrOne as bit) AS myBit
FROM myOldtable
однако sql очень недоволен литьем как бит. Как я могу сказать, чтобы выбрать столбец int (который, как я знаю, имеет только 0 и 1) Как бит?
4 ответов
нельзя!
CAST и конвертировать только работу в:
- BINARY [(N)]
- CHAR [(N)]
- дата
- DATETIME
- DECIMAL [(M [, D])]
- SIGNED [INTEGER]
- времени
- БЕЗ ЗНАКА [ЦЕЛОЕ ЧИСЛО]
нет места для: BIT, BITINT, TINYINT, MEDIUMINT, BIGINT, SMALLINT, ...
, вы можете создать свою собственную функцию cast_to_bit (n):DELIMITER $$
CREATE FUNCTION cast_to_bit (N INT) RETURNS bit(1)
BEGIN
RETURN N;
END
чтобы попробовать его самостоятельно, вы можете создать представление с несколькими преобразованиями, такими как:
CREATE VIEW view_bit AS
SELECT
cast_to_bit(0),
cast_to_bit(1),
cast_to_bit(FALSE),
cast_to_bit(TRUE),
cast_to_bit(b'0'),
cast_to_bit(b'1'),
cast_to_bit(2=3),
cast_to_bit(2=2)
... а потом опиши!
DESCRIBE view_bit;
та-да!! Теперь все бит (1)!!!
попробовать CONV(N,from_base,to_base)
преобразует числа между различными базами чисел. Возвращает строковое представление числа N, преобразованное из базового from_base в базовый to_base. Возвращает NULL, если любой аргумент равен NULL. Аргумент N интерпретируется как целое число, но может быть указан как целое число или строка. Минимальная база-2, а максимальная-36. Если to_base-отрицательное число, N рассматривается как число со знаком. В противном случае N считается неподписанным. CONV()
работает с 64-бит точность.
например.
select CONV(9, 10, 2);
попробуйте указать длину для типа данных bit.
CREATE TABLE myNewTable AS
SELECT cast(myIntThatIsZeroOrOne as bit(1)) AS myBit
FROM myOldtable
попробуйте использовать case:
CREATE TABLE myNewTable AS
SELECT (case myIntThatIsZeroOrOne when 1 then true else false end) AS myBit
FROM myOldtable