将 varchar 值 '1.1' 转换为数据类型 int 时转换失败

问题描述 投票:0回答:1

我有两列,一列数据类型为 Smallint,另一列为 int。我正在尝试连接两列和一个“.”产生一个最终值,但我不断收到“将 varchar 值 '1.1' 转换为数据类型 int 错误时转换失败”。例如,如果我在 ColumnA 中有“1”,在 ColumnB 中有“1”,我想像 CONCAT(ColumnA, '.', ColumnB) 一样将它们连接起来,得到值“1.1”。我的代码如下;

  , CAST(CASE WHEN ColumnA IS NOT NULL AND (ColumnB = 0 OR ColumnB IS NULL) THEN ColumnA
 WHEN ColumnA IS NOT NULL AND ColumnB IS NOT NULL AND ColumnB > 0 THEN CONCAT(ColumnA, '.', ColumnB) END AS NUMERIC(2,1))  AS 'VERSION'

我尝试了所有不同的演员,但似乎没有任何效果。任何帮助将非常感激。非常感谢。

sql casting type-conversion integer varchar
1个回答
0
投票

尝试转换

SELECT * , 
   CONVERT(Numeric(2,1),
         CASE WHEN ColumnA IS NOT NULL AND (ColumnB = 0 OR ColumnB IS NULL) THEN CONVERT(Varchar(10), ColumnA)
              WHEN ColumnA IS NOT NULL AND ColumnB IS NOT NULL AND ColumnB > 0 THEN CONCAT(ColumnA, '.', ColumnB) 
              END 
          ) AS 'VERSION'
FROM Example

小提琴

A 栏 B 栏 版本
1 1 1.1
2 2 2.2
3 4 3.4
© www.soinside.com 2019 - 2024. All rights reserved.