SQL Server 2005:确定变量的数据类型

16

在T-SQL中,是否有可能在运行时确定本地变量的类型?

例如,假设我想要执行以下操作:

IF ( @value IS INTEGER )

或者

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

有没有人知道如何实现这个?

编辑:这不是为了特定的任务,而是更多的一个通用知识问题。我很感激那些指出类型应该在同一批次声明中已知的答案,但我想知道是否可以在运行时确定类型。

3个回答

32

运行这个

declare @d int

select @d = 500

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

注意:在我的SQL Server版本中,如果在变量上运行sql_variant_property()而不是列,则会出现错误。 - user645280

0

使用 SQL 2019,以下代码仍在工作

DECLARE @MyVar int;SET @MyVar = 99;
DECLARE @MyVarDataType varchar(50);

SET @MyVarDataType  = cast(SQL_VARIANT_PROPERTY(@MyVar,'BaseType') AS varchar);

PRINT @MyVarDataType

-1

我不这么认为 - 但它是一个局部变量,所以你在同一过程中声明它,因此你会知道类型 - 或者我错过了什么吗?


通过@SQLMenace上面概述的方法,您可以找到一些内置函数的返回类型。请参阅此帖子以获取快速示例。 - Vitali Climenco
你可能认为这不可能,但至少有一个SaaS产品可以让你使用SQL脚本,但会自动将所有变量声明为nvarchar。我正试图找到确切的大小。 - bendodge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接