【问题标题】:SQL CAST or Convert FunctionSQL CAST 或转换函数
【发布时间】:2016-11-13 04:58:45
【问题描述】:

您好,我是 SQL 新手,需要将以下 cast 语句从 varchar(255) 转换为 decimal(6,2) 我尝试了很多选项,但无法实现

case when [ A 2 cost] = ' £-   ' then '0' else [ A 2 cost] end as Costing

目标中[A 2 Cost] 的结果是decimal(6,2) 数据类型,但在源中它是varchar(255)

【问题讨论】:

  • 我使用的是 Microsoft SQL Server 2000 - 8.00.2066 (Intel X86)
  • [ A 2 cost] 是什么意思?
  • 是列名
  • 请给出一些可能在A 2 cost 中的数据示例。你目前有什么问题?您是否知道,您在列名A 之前)使用空格,而不是到处使用空格?
  • 该列来自一个平面文件,它的值类似于 £- 和 £105.55,空白只是我的错字忽略列名中的空白,我收到错误将数据类型 varchar 转换为数字

标签: sql sql-server tsql casting sql-server-2000


【解决方案1】:

试试这个

    case when [ A 2 cost] = ' £-   ' 
then 0.0 else cast([ A 2 cost] as decimal(5,2)) end as Costing

如果其他列的开头包含 £,则需要清理它:

    case when [ A 2 cost] = ' £-   ' 
then 0.0 else cast(REPLACE([ A 2 cost],'£','') as decimal(5,2)) end as Costing

【讨论】:

  • TY 对不起,我无法清楚地解释这个问题,因为我是这个领域的新手,但你的分类是正确的..
猜你喜欢
  • 2018-06-27
  • 1970-01-01
  • 2015-10-10
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 2021-06-21
相关资源
最近更新 更多