Zug*_*alt 9 mysql casting bit mysql-5.1
我正在从SQL Server转换到MySQL 5.1,似乎试图使用select语句创建一个表,以便列有点.
理想情况下,以下方法可行:
CREATE TABLE myNewTable AS
SELECT cast(myIntThatIsZeroOrOne as bit) AS myBit
FROM myOldtable
Run Code Online (Sandbox Code Playgroud)
然而sql对于转换非常不满意.我怎么能告诉它选择一个int列(我知道只有0和1)作为一个位?
Nun*_*edo 12
你不能!
CAST和CONVERT只适用于:
没有空间: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
Run Code Online (Sandbox Code Playgroud)
要自己尝试,您可以使用以下几种转换创建视图:
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)
Run Code Online (Sandbox Code Playgroud)
......然后形容它!
DESCRIBE view_bit;
Run Code Online (Sandbox Code Playgroud)
TA-DAH!现在每个人都有点(1)!
小智 5
尝试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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16963 次 |
最近记录: |