fle*_*bot 1 c# sql t-sql sql-server-2008
我有6个字符长的数字,带有3个隐含小数位.一个示例数字是035000.所以这是数字35 [EDITED].我怎样才能将此转换nvarchar为decimal(6,3)?
当我尝试时,CAST(col as decimal(6,3)我得到错误:
将nvarchar转换为数据类型numeric的算术溢出错误.
我也尝试使用解析前导0
select CAST(SUBSTRING(col, patindex('%[^0]%', col), 6) as decimal(6, 3))
from my_table
Run Code Online (Sandbox Code Playgroud)
但是我收到了相同的错误消息.或者这是我应该留在DB中的东西nvarchar,并转换为我的C#代码?
您不能将'035000'转换为a,NUMERIC(6,3)因为它有太多数字:该数字为35000.000的数字表示,即8位数.
既然你知道你的数字在你的数据库中总是6位数,你应该首先转换为NUMERIC(6,0)(或任何其他可以容纳它的数字类型 - INTEGER例如),然后除以正确的因子将小数位移到位.(你说有3个隐含小数位,但你的例子显示4 - 只需使用你需要的转换因子):
SELECT CONVERT(NUMERIC(6, 3), CONVERT(NUMERIC(6, 0), col) / 1000.0) FROM my_table
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
358 次 |
| 最近记录: |