sql - 仅当变量是数值时才分配变量
问题描述
有可能做这样的事情吗?
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
解决方案
您也可以使用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演示。
推荐阅读
- angular - Angular - 基于 api 响应中发送的角色的重定向
- css - 使用 FlexBox 等高(下一级)
- unity3d - Google Cloud Storage JSON API 返回列出项目存储桶的错误请求,尽管 API 资源管理器适用于此
- google-apps-script - 获取彼此相邻的数据
- java - 面向对象编程比较链表
- r - 如果条件在 R 中失败,则返回某些步骤的编码算法
- flutter - 颤振 crossAxisAlignment 与 mainAxisAlignment
- css - Change colour of checkbox using shinyWidgets
- dart - Flutter Codelab:在不同的屏幕上更新 ListView
- mysql - 如何从列表中删除单个记录