2009-02-25 8 views
0

J'ai deux tables dans ma base de données (disons t1 et t2) et j'ai un champ de type BIT dans chaque table (appelons-le field1), ce que je veux faire est d'avoir le même fonctionnalité obtenue en utilisant le & & opérateur booléen (comme en C, C#, Java .. etc), ou en d'autres termes que je veux faire ceci:Equivalent d'utiliser && dans SQL

select t1.field1 & & t2.field1 de t1, t2 où .. (si champ1 est faux dans l'une des tables, il doit renvoyer false, pour retourner vrai, il doit être vrai dans les deux tables)

Je sais que cela peut être fait avec un cas d'utilisation (Ou IF() dans MySQL), mais je suis curieux de savoir s'il y a d'autres façons ...

Répondre

4
SELECT t1.field & t2.field 
+0

Ceci est faux. Exemple SELECT 2 & 4 renvoie 0 quand il devrait retourner vrai –

+0

2 et 4 sont INT. 2 & 4 == 0. Pour les BIT cela fonctionne bien – Quassnoi

+0

Ya mais si 0 ou non zéro est vu comme faux ou vrai, alors je pourrais voir comment cela pourrait éventuellement conduire à un bug. Mais je suis d'accord si vous êtes sûr d'utiliser un champ BIT, ça ira. –

1
SELECT t1.field1 && t2.field1 FROM t1, t2 WHERE t1.field1 = 1 AND t2.field2 = 1 
0

Il n'y a pas un moyen standard SQL pour le faire - un tel mécanisme est SGBD-spécifique.

+0

poste est étiqueté mysql, donc la question est spécifique DMBS –

1

AND and && sont équivalents. Ainsi, vous pouvez soit utiliser « t1.field1 && t2.field1 » ou « t1.field1 AND t2.field1 »:

SELECT t1.field1 && t2.field1 
FROM … 

SELECT t1.field1 AND t2.field1 
FROM …