我有两列,一列数据类型为 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'
我尝试了所有不同的演员,但似乎没有任何效果。任何帮助将非常感激。非常感谢。
尝试转换
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 |