如果相关的t-sql,则将字符串转换为int

时间:2018-05-08 09:04:53

标签: tsql types

我在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;

我想知道以其他方式可以实现同样的目标。还有其他功能可以帮助我吗?

谢谢

2 个答案:

答案 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