2010-02-17 2 views
1

Je suis conscient qu'il y a des fonctions dans Oracle et MsSQl qui peuvent le faire, donc y at-il une fonction qui le fait ou est-il possible de le convertir dans sqlite?Existe-t-il un moyen de convertir un entier (3 sous forme décimale) en son équivalent binaire 11 dans SQLite?

Ma structure de table;

  • clé primaire col1 int
  • col2 pas null int < - Je veux convertir la valeur de cette colonne en binaire un effectuer quelques comparaisons pour une séquence de jeu de combinaisons binaires

(Le comme je suis Employant prend les données à l'extérieur dans un datatable en C# et en le convertissant à l'extérieur, mais ce qui ne va pas apparemment)

+1

Huh? 3 décimal est 11 binaire .... –

+0

oh oui mon mauvais désolé mais oui ..il y a un moyen ?? – Alfred

Répondre

1

Merci beaucoup les gars, bien que je l'ai eu ^^ pour tous ceux qui ont le même problème est le code ici.

[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'); 
      } 
     } 
0

Utilisez une table de correspondance avec une colonne pour la représentation décimale d'un nombre ans un pour le bac ary. Bien sûr, cela ne fonctionnera que pour autant de numéros que vous pouvez vous permettre de stocker, et c'est une façon moche de soutenir l'arithmétique, mais cela pourrait fonctionner pour vous.

1

Vous pouvez certainement add functions into SQLite, mais vous pouvez également obtenir une représentation binaire des nombres juste en utilisant 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 chiffres binaires - facile à étendre à plus

2

Ce qui suit vous donnera une recherche table avec toute la représentation que vous étiez après. Vous pouvez vous joindre à cela.

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; 

Table Résultante a ces données:

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 
Questions connexes