2009-01-15 47 views
14

是否可以在TSQL中的運行時確定本地變量的類型?SQL Server 2005:確定變量的數據類型

例如,假設我想沿着這些線路做一些事情:

IF (@value IS INTEGER) 

或者

IF (TYPEOF(@value) = <whatever>) 

有誰知道有什麼方法可以做到這一點?

編輯:這不是一個特定的任務,這是更多的一般性知識問題。我很欣賞答案,表明該類型應該是已知的,因爲它是在同一批次內聲明的,我很好奇這個類型是否可以在運行時確定。

回答

27

來看,這種

declare @d int 

select @d = 500 

if cast(sql_variant_property(@d,'BaseType') as varchar(20)) = 'int' 
print 'yes' 
else 
print 'no' 
+0

注意:在我的SQL Server版本中,我只是在變量而不是列上運行sql_variant_property()時出現錯誤。 – 2013-07-02 15:07:17

-1

我不這麼認爲 - 但它是一個局部變量,所以在相同的過程中聲明它,所以你會知道類型反正 - 或者我錯過了什麼?

+0

看上面介紹的方法@SQLMenace可以找出返回類型的一些內置的功能。 有關快速示例,請參閱此[post](http://climenco.blogspot.com/2014/04/t-sql-coalesce-returns-int.html)。 – 2014-07-18 12:49:15

相關問題