【发布时间】:2016-07-30 08:18:54
【问题描述】:
我试图通过识别单位(百万或十亿)然后相应地相乘,将以下字符串更改为它们各自的数值。我相信我对变量类型有疑问,但似乎找不到解决方案。有什么建议吗?
1.44B到1,440,000,000
1.564M到1,564,000
UPDATE [_ParsedXML_Key_Stats]
SET [Value] = CASE
WHEN right(rtrim([_ParsedXML_Key_Stats].[Value]),1) = 'B' And [_ParsedXML_Key_Stats].[NodeName] = 'EBITDA'
THEN substring(rtrim([_ParsedXML_Key_Stats].[Value]),1,len([_ParsedXML_Key_Stats].[Value])-1) * 1000000000
WHEN right(rtrim([_ParsedXML_Key_Stats].[Value]),1) = 'M' And [_ParsedXML_Key_Stats].[NodeName] = 'EBITDA'
THEN substring(rtrim([_ParsedXML_Key_Stats].[Value]),1,len([_ParsedXML_Key_Stats].[Value])-1) * 1000000
ELSE 0
END
【问题讨论】:
-
你用的是什么数据库?
-
对不起,这是 SQL Server 2012
-
抛出更多细节...您有错误,或者只是您的查询没有执行或不符合您的预期?
-
我真的希望您使用 FROM,这样您就可以为该表名设置别名。
标签: sql sql-server substring case