Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Storing a number of power of 2 into INT field
Message
 
 
To
09/06/2017 16:03:59
General information
Forum:
Microsoft SQL Server
Category:
Other
Miscellaneous
Thread ID:
01651872
Message ID:
01651891
Views:
41
>>>>>>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?
>
>Google hint:
>sql server bit field type
>Each Usingfeature? would be a separate bit column
>
>AFAIR before vfp9 Bit is the easiest field to map to vfp logical in cusor/view Remote Connections, but used vfp8 only a short time.
>Portability to other backends is not really something you strive for, otherwise I'd either use smallest int with 1/0 logic (or empty() if you prefer) or the power trick you already use.

I had a chance to get away from computer and clear my head. Now that I re-read your message I understand what you are suggesting. But in my case, since I need about 300 flags, I would have to create 300 bit columns. And I don't like this idea. I will consider other options. 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
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform