是否可以在TSQL中的運行時確定本地變量的類型?SQL Server 2005:確定變量的數據類型
例如,假設我想沿着這些線路做一些事情:
IF (@value IS INTEGER)
或者
IF (TYPEOF(@value) = <whatever>)
有誰知道有什麼方法可以做到這一點?
編輯:這不是一個特定的任務,這是更多的一般性知識問題。我很欣賞答案,表明該類型應該是已知的,因爲它是在同一批次內聲明的,我很好奇這個類型是否可以在運行時確定。
是否可以在TSQL中的運行時確定本地變量的類型?SQL Server 2005:確定變量的數據類型
例如,假設我想沿着這些線路做一些事情:
IF (@value IS INTEGER)
或者
IF (TYPEOF(@value) = <whatever>)
有誰知道有什麼方法可以做到這一點?
編輯:這不是一個特定的任務,這是更多的一般性知識問題。我很欣賞答案,表明該類型應該是已知的,因爲它是在同一批次內聲明的,我很好奇這個類型是否可以在運行時確定。
來看,這種
declare @d int
select @d = 500
if cast(sql_variant_property(@d,'BaseType') as varchar(20)) = 'int'
print 'yes'
else
print 'no'
我不這麼認爲 - 但它是一個局部變量,所以在相同的過程中聲明它,所以你會知道類型反正 - 或者我錯過了什麼?
看上面介紹的方法@SQLMenace可以找出返回類型的一些內置的功能。 有關快速示例,請參閱此[post](http://climenco.blogspot.com/2014/04/t-sql-coalesce-returns-int.html)。 – 2014-07-18 12:49:15
注意:在我的SQL Server版本中,我只是在變量而不是列上運行sql_variant_property()時出現錯誤。 – 2013-07-02 15:07:17