首页 > 解决方案 > 仅当变量是数值时才分配变量

问题描述

有可能做这样的事情吗?

declare @ShouldBeNumber as varchar(10)
set @ShouldBeNumber = 1

declare @Number as varchar(10)

select @Number = case when ISNUMERIC(@ShouldBeNumber) then @Number = @ShouldBeNumber else @Number = '' end

即仅在变量是数字时才分配变量。我花了最后一个小时在谷歌上搜索这个并没有找到任何东西。

例如,我看过这里:How to check if a variable has a value in a SQL Server 2008 stored procedure

标签: sqlsql-server

解决方案


您也可以使用try_cast()如下所示的功能。

DECLARE @ShouldBeNumber AS VARCHAR(10)
SET @ShouldBeNumber = 'A'
DECLARE @number AS VARCHAR(10)

Select @number = isnull(cast(try_cast(@ShouldBeNumber as float) as varchar(10)),'')

SELECT @number

现场db<>fiddle演示。


推荐阅读