我有具有将稍后在导入过程被转化成decimal(9,3)
数据的列[Cash] nvarchar(50)
,一些数据与正常外观数值如134.630,-80.662和一致324.372。偶尔我有多个点的数字值的数据,如1.324.372 and -2.134.630.
有没有办法去除这个额外的点。转换为有效的十进制数据类型
1
A
回答
1
declare @yourtable table(cash varchar(20))
insert @yourtable values('1.324.372')
insert @yourtable values('-2.134.630')
insert @yourtable values('1.234.567.89')
旧代码:
select reverse(replace(replace(stuff(reverse(cash), charindex(
'.', reverse(cash)), 1, ','), '.', ''), ',', '.'))
from @yourtable
稍微升级代码(结果是一样的):
select reverse(stuff(reverse(replace(cash, '.', '')),
charindex('.', reverse(cash)), 1, '.'))
from @yourtable
结果:
1324.372
-2134.630
1234567.89
+0
辉煌的成果。感谢您的帮助 –
1
你可以;
select case when len(cash) - len(replace(cash, '.', '')) > 1 then
reverse(stuff(reverse(cash), charindex('.', reverse(cash)), 1, ''))
else
cash
end
from T
+0
这是我最初尝试的 –
0
创建包含具有适当值的计算字段的视图。
这样你仍然可以看到varchar值和相应的十进制值。
像这样:
选择 [现金], 铸造(替换([现金], '')为十进制 '')从....
为[CashDecimal]相关问题
- 1. 将int转换为十进制数据类型的过程?
- 2. 将二进制,十六进制和八进制转换为java数据类型
- 3. 没有数据类型可以保存完整数字时将十进制转换为十六进制
- 4. 有效的算法来转换整数为十进制
- 5. 十进制转换为十六进制的转换(Java)的
- 6. 理解类值(翻译十六进制转换为十进制)
- 7. 通过十六进制转储将Fortran真实数据类型转换为Matlab
- 8. 将十进制转换为十六进制和十六进制
- 9. 十进制转换为字符串“指定的转换无效”
- 10. 将十六进制转换为二进制,然后转换为十进制
- 11. 转换十六进制数长整型
- 12. Python的转换分数为十进制
- 13. 转换为十进制
- 14. 双转换为十进制
- 15. 转换为十六进制?
- 16. 转换32位二进制数转换为十进制
- 17. 将数据类型nvarchar转换为十进制的错误解决方案
- 18. 将十进制数转换为分数
- 19. 将十六进制数转换为十进制格式
- 20. 在Arduino上将整数/十进制转换为十六进制?
- 21. 将十进制数转换为十六进制
- 22. 转换十进制转换为浮动会发出警告意外的类型十进制
- 23. 如何转换为Protobuf.js中的十进制类型
- 24. 将数字的十六进制表示法转换为十进制数值的有效方法
- 25. 十六进制转换为二进制
- 26. 将二进制转换为十进制
- 27. 二进制转换为十进制 - understaing
- 28. 从二进制转换为十进制
- 29. 将十进制转换为二进制
- 30. 从二进制转换为十进制
不''-2.134.630.''有在最后一个点一样好,甚至是一个句号? –
所以,数字分组符号是'.'。什么是小数点分隔符? –
您可以更确切地指定行为吗?例如,所有的值都有3位小数。正如所写,实际上并不清楚数字*应该是...... – MatBailie