Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Storing a number of power of 2 into INT field
Message
 
 
À
09/06/2017 14:45:18
Information générale
Forum:
Microsoft SQL Server
Catégorie:
Autre
Divers
Thread ID:
01651872
Message ID:
01651889
Vues:
46
>>>>>>If I store a number of power of 2 into INT field, how many different "values" will this field hold? I am not sure I phrase my question correctly, so here is an example of what I am trying to say.
>>>>>>Say I store 128 into a INT field. Which means that I can get 7 numbers: 2, 4, 8, 16, 32, 64, 128
>>>>>>Since an INT field can hold up to 2,147,483,647, what is the max number can I get from this value?
>>>>>
>>>>>The maximum value in regards to that calculation would be 1,073,741,824. That would be 2^30. If you go higher, you will be one number over the maximum. I would suggest to switch the field to Big Integer if you have some concerns.
>>>>
>>>>This is about 1 billion. For what I am trying to do, this is more than enough. Thank you.
>>>
>>>
>>>Still somewhat puzzled by your question ;-)
>>>
>>>One possible use for a int in power2 is in "combination mode" as array of bit fields most of us remember.
>>>Yes, you can easily squeeze 30 flags into an INT, but why ? SQL server has the bit data type and will pack on byte sizes depending on the number of flag[s / columns] you need. Say you need 15 flags, SQL Server will only reserve 2 bytes. Small benefit size ways but NO DANGER if suddelny you need 33 flags....
>>>
>>>OTOH, if there the max value which is important after differing # of iterations, I'd save the exponents and work directly with them, perhaps with dedicated functions or SPs.
>>>
>>>Indexing on such fields probably problematic IAC. What am I missing ?
>>>
>>>Friday curios
>>>
>>>thomas
>>
>>I don't understand how the bit data type can serve me in this case (and this is just me). Let me describe what I am considering this field (INT) for (simplified example).
>>Say, the program has 5 features: Feature 1, Feature 2, Feature 3, Feature 4, Feature 5. Each record is using none, or any number of features. So I will store in the INT field (in pseudo code) the following value:
>>
>>REPLACE MyFeatureField with iif( UsingFeature1, 1, 0) + iif( UsingFeature2, 2, 0) + iif( UsingFeature3, 4, 0) + ;
>>  iif( UsingFeature4, 8, 0) + iif( UsingFeature5, 16, 0) 
>>
>>Then the code (using syntax " MyFeatureField & > 1 ") can check if the record is "flagged" for Feature1 or 2 or whatever. The number of "Features" is very large; hence I was asking the question.
>>How would I apply your suggestion of a BIT type?
>
>If all n features were present, the sum would be one less than 2 to the power of n+1
>So if you stay below that number, you'll be OK

Thank you.
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform