【问题标题】:remove trailing chars to get numeric value删除尾随字符以获取数值
【发布时间】:2013-10-03 16:09:42
【问题描述】:

我正在努力将两个表达式合二为一,以便我可以删除包含 3.214mm 之类值的 varchar 列的尾随 'mm' 字符并使用这些字符作为数值。

我遇到的问题是,也可能存在 null 或空字符串值,我无法找到一种方法来组合下面的两个表达式。

示例:SQLfiddle

DECLARE @string varchar(128)
SET @string = '4.123mm'
SELECT ISNULL(NULLIF(@string,''),NULL) As MyString ;

DECLARE @createNumber varchar(128)
SET @createNumber = '4.123mm'
select LEFT(@createNumber, NULLIF (LEN(@createNumber) - 2, - 1))As MyNumber

【问题讨论】:

  • 有点俗气,但你知道尺寸是“毫米”吗?可能会考虑用“”替换“mm”。
  • 如果有点程序这里还有一些有趣的想法:stackoverflow.com/questions/106206/…

标签: string tsql sql-server-2012 isnull


【解决方案1】:

一种处理mm/''/null的方法;

select cast(isnull(replace('0' + @createNumber, 'mm', ''), 0) as decimal(6,3))

【讨论】:

    【解决方案2】:
    DECLARE @createNumber varchar(128)
    SET @createNumber = ''
    select reverse(stuff(reverse(@createNumber), 1,2, ''))
    

    如果 createnumber 小于 2 个字符,这将返回 null。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-03
      • 2018-06-05
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 2015-02-10
      • 2011-04-01
      相关资源
      最近更新 更多