在SQLite中,有没有办法将整数(十进制形式的3)转换为其二进制等价物11?
我知道Oracle和MsSQl中有一些函数可以做到这一点,那么是否有任何函数可以做到这一点,或者是否有任何方法可以在sqlite中转换它 我的桌子结构在SQLite中,有没有办法将整数(十进制形式的3)转换为其二进制等价物11?,sqlite,binary,Sqlite,Binary,我知道Oracle和MsSQl中有一些函数可以做到这一点,那么是否有任何函数可以做到这一点,或者是否有任何方法可以在sqlite中转换它 我的桌子结构 col1主键int col2 not null int使用一个查找表,其中一列表示数字的十进制,一列表示二进制。当然,这只适用于你能负担得起存储空间的数字,这是一种糟糕的支持算术的方式,但它可能适用于你。使用一个查找表,其中一列表示数字的十进制,一列表示二进制。当然,这只适用于你能负担得起存储空间的数字,这是一种糟糕的支持算术的方式,但它可能对
- col1主键int
- col2 not null int使用一个查找表,其中一列表示数字的十进制,一列表示二进制。当然,这只适用于你能负担得起存储空间的数字,这是一种糟糕的支持算术的方式,但它可能适用于你。使用一个查找表,其中一列表示数字的十进制,一列表示二进制。当然,这只适用于你能负担得起存储空间的数字,这是一种糟糕的支持算术的方式,但它可能对你有用。你当然可以,但你也可以使用SQL获得数字的二进制表示:
对于16位二进制数字-很容易扩展到更多您当然可以,但您也可以使用SQL获得数字的二进制表示:select case (a>>15)&1 when 1 then '1' else '0' end || case (a>>14)&1 when 1 then '1' else '0' end || case (a>>13)&1 when 1 then '1' else '0' end || case (a>>12)&1 when 1 then '1' else '0' end || case (a>>11)&1 when 1 then '1' else '0' end || case (a>>10)&1 when 1 then '1' else '0' end || case (a>>9)&1 when 1 then '1' else '0' end || case (a>>8)&1 when 1 then '1' else '0' end || case (a>>7)&1 when 1 then '1' else '0' end || case (a>>6)&1 when 1 then '1' else '0' end || case (a>>5)&1 when 1 then '1' else '0' end || case (a>>4)&1 when 1 then '1' else '0' end || case (a>>3)&1 when 1 then '1' else '0' end || case (a>>2)&1 when 1 then '1' else '0' end || case (a>>1)&1 when 1 then '1' else '0' end || case (a>>0)&1 when 1 then '1' else '0' end from (select 1023 as a);
select case (a>>15)&1 when 1 then '1' else '0' end || case (a>>14)&1 when 1 then '1' else '0' end || case (a>>13)&1 when 1 then '1' else '0' end || case (a>>12)&1 when 1 then '1' else '0' end || case (a>>11)&1 when 1 then '1' else '0' end || case (a>>10)&1 when 1 then '1' else '0' end || case (a>>9)&1 when 1 then '1' else '0' end || case (a>>8)&1 when 1 then '1' else '0' end || case (a>>7)&1 when 1 then '1' else '0' end || case (a>>6)&1 when 1 then '1' else '0' end || case (a>>5)&1 when 1 then '1' else '0' end || case (a>>4)&1 when 1 then '1' else '0' end || case (a>>3)&1 when 1 then '1' else '0' end || case (a>>2)&1 when 1 then '1' else '0' end || case (a>>1)&1 when 1 then '1' else '0' end || case (a>>0)&1 when 1 then '1' else '0' end from (select 1023 as a);
对于16位二进制数字-易于扩展到更多以下内容将为您提供一个查找表,其中包含您所追求的所有表示形式。你可以加入这个
结果表包含以下数据:begin; CREATE TABLE LookUpHours(ID integer primary key, representation text); insert into LookUpHours (id) values ( 0); insert into LookUpHours (id) values ( 1); insert into LookUpHours (id) values ( 2); insert into LookUpHours (id) values ( 3); insert into LookUpHours (id) values ( 4); insert into LookUpHours (id) values ( 5); insert into LookUpHours (id) values ( 6); insert into LookUpHours (id) values ( 7); insert into LookUpHours (id) values ( 8); insert into LookUpHours (id) values ( 9); insert into LookUpHours (id) values (10); insert into LookUpHours (id) values (11); insert into LookUpHours (id) values (12); insert into LookUpHours (id) values (13); insert into LookUpHours (id) values (14); insert into LookUpHours (id) values (15); insert into LookUpHours (id) values (16); insert into LookUpHours (id) values (17); insert into LookUpHours (id) values (18); insert into LookUpHours (id) values (19); insert into LookUpHours (id) values (20); insert into LookUpHours (id) values (21); insert into LookUpHours (id) values (22); insert into LookUpHours (id) values (23); insert into LookUpHours (id) values (24); insert into LookUpHours (id) values (25); insert into LookUpHours (id) values (26); insert into LookUpHours (id) values (27); insert into LookUpHours (id) values (28); insert into LookUpHours (id) values (29); insert into LookUpHours (id) values (30); insert into LookUpHours (id) values (31); update LookUpHours set representation = case when (id & 16) != 0 then '1' else '0' end || case when (id & 8) != 0 then '1' else '0' end || case when (id & 4) != 0 then '1' else '0' end || case when (id & 2) != 0 then '1' else '0' end || case when (id & 1) != 0 then '1' else '0' end ; commit;
ID representation ---------- -------------- 0 00000 1 00001 2 00010 3 00011 4 00100 5 00101 6 00110 7 00111 8 01000 9 01001 10 01010 11 01011 12 01100 13 01101 14 01110 15 01111 16 10000 17 10001 18 10010 19 10011 20 10100 21 10101 22 10110 23 10111 24 11000 25 11001 26 11010 27 11011 28 11100 29 11101 30 11110 31 11111
下面将为您提供一个查找表,其中包含您所追求的所有表示形式。你可以加入这个
结果表包含以下数据:begin; CREATE TABLE LookUpHours(ID integer primary key, representation text); insert into LookUpHours (id) values ( 0); insert into LookUpHours (id) values ( 1); insert into LookUpHours (id) values ( 2); insert into LookUpHours (id) values ( 3); insert into LookUpHours (id) values ( 4); insert into LookUpHours (id) values ( 5); insert into LookUpHours (id) values ( 6); insert into LookUpHours (id) values ( 7); insert into LookUpHours (id) values ( 8); insert into LookUpHours (id) values ( 9); insert into LookUpHours (id) values (10); insert into LookUpHours (id) values (11); insert into LookUpHours (id) values (12); insert into LookUpHours (id) values (13); insert into LookUpHours (id) values (14); insert into LookUpHours (id) values (15); insert into LookUpHours (id) values (16); insert into LookUpHours (id) values (17); insert into LookUpHours (id) values (18); insert into LookUpHours (id) values (19); insert into LookUpHours (id) values (20); insert into LookUpHours (id) values (21); insert into LookUpHours (id) values (22); insert into LookUpHours (id) values (23); insert into LookUpHours (id) values (24); insert into LookUpHours (id) values (25); insert into LookUpHours (id) values (26); insert into LookUpHours (id) values (27); insert into LookUpHours (id) values (28); insert into LookUpHours (id) values (29); insert into LookUpHours (id) values (30); insert into LookUpHours (id) values (31); update LookUpHours set representation = case when (id & 16) != 0 then '1' else '0' end || case when (id & 8) != 0 then '1' else '0' end || case when (id & 4) != 0 then '1' else '0' end || case when (id & 2) != 0 then '1' else '0' end || case when (id & 1) != 0 then '1' else '0' end ; commit;
ID representation ---------- -------------- 0 00000 1 00001 2 00010 3 00011 4 00100 5 00101 6 00110 7 00111 8 01000 9 01001 10 01010 11 01011 12 01100 13 01101 14 01110 15 01111 16 10000 17 10001 18 10010 19 10011 20 10100 21 10101 22 10110 23 10111 24 11000 25 11001 26 11010 27 11011 28 11100 29 11101 30 11110 31 11111
谢谢很多人,虽然我得到了它^^^对于任何有同样问题的人,这里是代码[SQLiteFunction(Arguments = 1, FuncType = FunctionType.Scalar, Name = "ConvertToBinary")] class ConvertToBinary : SQLiteFunction { public override object Invoke(object[] args) { int inputNumber = Convert.ToInt16(args[0]); return Convert.ToString(inputNumber, 2).PadLeft(5, '0'); } }
谢谢很多人,虽然我得到了它^^^对于任何有同样问题的人,这里是代码[SQLiteFunction(Arguments = 1, FuncType = FunctionType.Scalar, Name = "ConvertToBinary")] class ConvertToBinary : SQLiteFunction { public override object Invoke(object[] args) { int inputNumber = Convert.ToInt16(args[0]); return Convert.ToString(inputNumber, 2).PadLeft(5, '0'); } }
嗯?3十进制是11二进制…哦,是的,我很抱歉,但是是的…有办法吗?嗯?3十进制是11二进制…哦,是的,我很抱歉,但是是的…有办法吗??