我在microsoft azure上使用t-sql。 我有一个名为size的列,类型为nvarchar。它可能表示大小为数字(46),字符('S','M','L'..),它也包含空值。 我想添加一个数字数据类型的列 - 它将显示数字值的数字,其余为空值。
以下查询可以满足我的需求:
select name, size, iif(size like '[0-9][0-9]', cast(size as int), null) as numSize
from product;
我想知道以其他方式可以实现同样的目标。还有其他功能可以帮助我吗?
谢谢
答案 0 :(得分:0)
您正在寻找的函数是try_parse(),它会将您的字符串转换为整数(在本例中),否则返回NULL,例如。
select
name
, size
, try_parse(size as int) as numSize
from
product;
在旁注中,您将其标记为 tsqlt ,这是一个(精彩的)SQL Server单元测试框架。我已将其更改为 tsql 。
答案 1 :(得分:0)
您只需使用案例说明:
select name, size,
CASE ISNUMERIC(size)
WHEN 1 THEN CAST(size AS INT)
ELSE NULL
END as numSize
from product