gpt4 book ai didi

sql - SQL Server 2012 中解析固定宽度字符串的更好方法?

转载 作者:行者123 更新时间:2023-12-01 05:05:05 25 4
gpt4 key购买 nike

我正在处理来自旧系统的数据,该系统具有通用“事务”表,其中数据列包含各种记录类型,并且不包含小数。

例如,以下行的价格为 358.25,溢价为 0 (00.00),吨量为 003.382,因此正确的总值(value)为 1104.1265

358250000003082-

我提取这个的 T-SQL 是(忽略实际数据列比我的例子大得多的子字符串值)
convert(decimal(6,0), SUBSTRING(data,105,6))/1000 * (convert(decimal(5,0), SUBSTRING(data,51,5))/100 + convert(decimal(4,0), SUBSTRING(data,56,4)/100)) grossPrice

这工作得很好,但我需要在很多地方这样做,如果我在错误的地方得到了一个支架,它运行良好但给出了错误的结果。

有没有更好的方法将字符串转换为包含小数位数的小数?

我希望有类似 convert(decimal(6,3), '003082') 的东西但这会产生溢出错误(可以理解)

最佳答案

你可以很容易地转换你的例子。你只需要考虑整数数学。您会注意到 I 除以 1000。这会导致隐式转换,因此您可以获得正确的小数位。

select cast(convert(int, '003082') / 1000. as numeric(6,3))

关于sql - SQL Server 2012 中解析固定宽度字符串的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29703499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com