2015-01-03 37 views
0

当我在Transact-SQL查询中声明SMALLINT类型的变量@Number时,它以字符串的形式输出,我也可以将该变量与字符串进行比较。例如:T-sql返回smallint作为字符串

DECLARE @Number SMALLINT 
SET @Number = 12 
IF (@Number LIKE '12') 
    SET @Number = 1 
SELECT @Number 

有没有人知道这是为什么?

+0

提示:SQL Server可以明确地提供可变的数据类型。尝试'将@Number声明为SmallInt = 12;选择@Number,sql_variant_property(@Number,'basetype')AS basetype;'。 – HABO

回答

2

==运算符在tsql中不存在。您需要使用一个=

List of operators

DECLARE @Number SMALLINT 
SET @Number = 12 
IF (@Number = 12) 
    SET @Number = 1 
SELECT @Number 
+0

虽然你是对的,变量作为一个字符串输出。当我使用PHP vardump查询结果时,我得到如下结果: [“@Number”] => string(1)“1” – Joris

+0

这是一个smallint tho,我相信你必须在PHP中阅读它的错误,但我没有经验... – Hatsjoem

+1

我认为问题是smallint,但它不是。一个int变量也返回一个字符串......但是,当我从我的数据库中选择一个int,并且vardump它时,它确实返回了一个int类型的值。无论如何,我已经标记了你的答案是正确的,因为你是对的,我现在感觉自己是世界上最愚蠢的人。 – Joris