2009-09-24 32 views
1

我正在寻找一种方法来返回代表2个整数是否相等的位。当我尝试以下时,我得到“不正确的语法附近'='。”我错过了什么?我使用的是SQL Server 2005中如何比较sql中的2个整数?

DECLARE @ Table1Count AS INT

DECLARE @ Table2Count AS INT

SELECT @ Table1Count = COUNT(*)FROM表1

SELECT @ Table2Count = COUNT( *)FROM表2

PRINT @ Table1Count = @ Table2Count

感谢。

回答

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

交替:

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

谢谢,想通这是试图用我的方法分配。 – NATO24 2009-09-24 16:23:41

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

只是一个附录:我们这里的网络是向下的时刻,所以我不能测试任何东西 - 这就是为什么我在#2玩玩而已而不是写代码 - 所以拿一点盐来说吧。但是:

某些SQL引擎有布尔变量,有些则不。在Oracle中,“从双重选择1 + 1 = 2”是synatx错误,因为1 + 1 = 2是一个操作,而不是表达式。你必须像其他海报所说的那样使用“案例”。但是在Postgres中,“select 1 + 1 = 2”会显示“true”。

有观点认为,“<”是一个操作就像“+”,只不过它返回一个布尔值,而不是一个int,是那些有很大的分歧简单但功能强大的一个想法......但它被发明后, SQL和仅在缓缓蠕动。