2009-01-15 99 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

相关问题