sql - 仅当变量是数值时才为其赋值

标签 sql sql-server

可以做这样的事情吗?

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

最佳答案

我想你只是想要:

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

我假设 isnumeric() 可以满足您的要求,尽管根据您的需要它可能会出现一些不需要的行为(例如接受负数、小数和指数表示法)。 else 子句是一个无操作;它只是将现有值分配回@Number

关于sql - 仅当变量是数值时才为其赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61252445/

相关文章:

sql - 如果其中一个查询失败,存储过程会失败吗?

mysql - 哪个先被删除?主键还是外键?

SQL Case Order 按特定顺序

sql - 使用 group by 进行 sql 查询时出现错误

C# SQL参数查询带in

sql - 如何在 sql server 2008 中声明时在游标中使用 if 条件?

ruby-on-rails - RoR 中驱动程序和应用程序之间的体系结构不匹配

sql-server - 不使用单引号更新字符串列 - 一般问题

sql - 如何在sql中将两行合并为一行?

MySQL 将 Unicode 解码为 UTF-8 函数