2015-01-03 38 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