2009-09-24 8 views
1

Je suis à la recherche d'un moyen de retourner un peu en indiquant si 2 ints sont égaux. Lorsque j'essaie ce qui suit, je reçois "Syntaxe incorrecte near '='." Qu'est-ce que je rate? J'utilise SQL Server 2005.Comment puis-je comparer 2 ints en sql?

DECLARE @ Table1Count AS INT

DECLARE @ Table2Count AS INT

SELECT @ Table1Count = COUNT (*) FROM Table1

SELECT @ Table2Count = COUNT (*) DE Tableau2

PRINT @ = @ Table1Count Table2Count

Merci.

Répondre

10
IF @Table1Count = @Table2Count 
    PRINT 1 
ELSE 
    PRINT 0 

alternativement:

PRINT CASE WHEN @Table1Count = @Table2Count THEN 1 ELSE 0 END 
+0

Merci, pensé qu'il essayait d'assigner à mon approche. – NATO24

3
DECLARE @Table1Count AS INT 
DECLARE @Table2Count AS INT 
SELECT @Table1Count = COUNT(*) FROM Table1 
SELECT @Table2Count = COUNT(*) FROM Table2 
PRINT case when @Table1Count = @Table2Count then '1' else '0' end 
0

Juste un additif: Notre réseau est ici en bas au moment où je ne peux pas tester quoi que ce soit - ce qui est la raison pour laquelle je suis sur Stackoverflow autour goofing plutôt que d'écrire du code - alors prenez ce que je dis ici avec un grain de sel. Mais:

Certains moteurs SQL ont des variables booléennes et d'autres non. Dans Oracle, "select 1 + 1 = 2 from dual" est une erreur synatx, car 1 + 1 = 2 est une opération, pas une expression. Vous devrez utiliser un «cas» comme d'autres affiches l'ont noté. Mais dans Postgres, "select 1 + 1 = 2" afficherait "true". L'idée que "<" est une opération comme "+", sauf qu'elle renvoie un booléen plutôt qu'un int, est une de ces idées simples mais puissantes qui ont de grandes ramifications ... mais elle a été inventée après SQL et ne glissait lentement.

Questions connexes