在SQLite中,有没有办法将整数(十进制形式的3)转换为其二进制等价物11?

在SQLite中,有没有办法将整数(十进制形式的3)转换为其二进制等价物11?,sqlite,binary,Sqlite,Binary,我知道Oracle和MsSQl中有一些函数可以做到这一点,那么是否有任何函数可以做到这一点,或者是否有任何方法可以在sqlite中转换它 我的桌子结构 col1主键int col2 not null int使用一个查找表,其中一列表示数字的十进制,一列表示二进制。当然,这只适用于你能负担得起存储空间的数字,这是一种糟糕的支持算术的方式,但它可能适用于你。使用一个查找表,其中一列表示数字的十进制,一列表示二进制。当然,这只适用于你能负担得起存储空间的数字,这是一种糟糕的支持算术的方式,但它可能对

我知道Oracle和MsSQl中有一些函数可以做到这一点,那么是否有任何函数可以做到这一点,或者是否有任何方法可以在sqlite中转换它

我的桌子结构

  • col1主键int

  • col2 not null int使用一个查找表,其中一列表示数字的十进制,一列表示二进制。当然,这只适用于你能负担得起存储空间的数字,这是一种糟糕的支持算术的方式,但它可能适用于你。

    使用一个查找表,其中一列表示数字的十进制,一列表示二进制。当然,这只适用于你能负担得起存储空间的数字,这是一种糟糕的支持算术的方式,但它可能对你有用。

    你当然可以,但你也可以使用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);
    
    对于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);
    

    对于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二进制…哦,是的,我很抱歉,但是是的…有办法吗??