如何将ISNUMERIC()
函数与sql_variant
数据类型一起使用?
以下代码不起作用
DECLARE @x sql_variant
SET @x = 3
IF ISNUMERIC(@x) = 1
SELECT 'Numeric'
ELSE
SELECT ' NOT'
错误:
Msg 8116,Level 16,State 1,Line 4
参数数据类型sql_variant对于isnumeric函数的参数1无效。
但这有效
IF ISNUMERIC(CAST(@x AS INT)) = 1
是否可以通过CAST()
关于此问题,谷歌没有找到任何有用的东西谢谢,我正在使用 SQL Server 2008 R2
答案 0 :(得分:3)
投射到int
并没有多大意义。您的转换将失败(当出现除整数之外的其他内容时),您将收到错误。
但是,您可以转发nvarchar(max)
- 此应该始终有效,而您的ISNUMERIC
功能将按预期运行
答案 1 :(得分:3)
如果您想知道基础数据类型是否为数字,可以使用SQL_Variant_Property
查找;
DECLARE @x sql_variant
SET @x = 3.2
SELECT CASE
WHEN SQL_Variant_Property(@x, 'Precision') = 0
THEN 'NO'
ELSE 'YES'
END