Avatar billede travelnow Nybegynder
14. januar 2008 - 15:44 Der er 8 kommentarer og
1 løsning

Binær and

Kan man ikke lave en binær and via sql.

Jeg en tabel med regler, og en regel kan gælde for både et product x (1024) og et product y (512), det gemmes som 1536 i databasen, men jeg mangler en sql statment der kan undersøge hvilke regler der gælder for et givet produkt.

F.eks Ala
select * from rules
where rule_product and 1024
Avatar billede gammelhat Nybegynder
14. januar 2008 - 15:47 #1
Avatar billede travelnow Nybegynder
14. januar 2008 - 23:42 #2
Jeg kan ikke se at der står noget via det link, som jeg kan bruge.

Det jeg har brug for er at få returneret de rækker hvor where rule_product and xxx er lig true

f.eks
hvis jeg har følgende tal i tabellen
Navn,      rule_product
regel nr 1, 16
regel nr 2, 24
regel nr 3, 160
regel nr 4, 256

select Navn from rule where rule_product and 8
Ovenstående select skal så kun returnere 'regel nr 2'

Og nedenstående skal returnere 'regel nr 3'
select Navn from rule where rule_product and 32

Og denne skal returner regel nr 1 og regel nr 2
select Navn from rule where rule_product and 16
Avatar billede travelnow Nybegynder
14. januar 2008 - 23:48 #3
Hvis der er en der har en anden ide hvordan jeg kan gøre det via sql, vil jeg selvfølgelig gerne høre om det.
Det jeg gør på nuværende er at selecte alle værdier ind i mit program og herefter løber jeg dem igennem via foreach(int rule_product in result) og laver en and for at se om reglen skal bruges, men det ville jo være noget mere smart/effektiv hvis jeg kunne hente det via sql.
Avatar billede arne_v Ekspert
14. januar 2008 - 23:50 #4
SELECT navn FROM rule WHERE (rule_product & 8) > 0
SELECT navn FROM rule WHERE (rule_product & 32) > 0
SELECT navn FROM rule WHERE (rule_product & 16) > 0
Avatar billede gammelhat Nybegynder
14. januar 2008 - 23:51 #5
Det er vel den bitwise and operator, som linket beskriver

select Navn from rule where rule_product & 8
Avatar billede arne_v Ekspert
15. januar 2008 - 00:00 #6
SQLServer er lidt type sikker, så man er nødt til at bruge >0
Avatar billede arne_v Ekspert
15. januar 2008 - 01:53 #7
eller <> 0
Avatar billede travelnow Nybegynder
15. januar 2008 - 08:13 #8
arne_v>>
Yes der var den, så simpel men alligevel så svær at gætte, det har jeg bare ledt efter i flere timer.
Kom med et svar Arne, så du kan få dine point
Avatar billede arne_v Ekspert
16. januar 2008 - 02:07 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester