如果组合不同但可转换数据类型的列,UNION的结果将生成一个等于两列最大精度的列数据类型。
CREATE TABLE tab1
(
col1 DECIMAL(5 ,2)
)
CREATE TABLE tab2
(
col2 DECIMAL(5 ,2)
)
INSERT INTO tab1
VALUES
(
11.5
)
INSERT INTO tab2
VALUES
(
11.65
)
SELECT col1
FROM tab1 UNION
SELECT round(col2,0)
FROM tab2
结果:
11.50
12.00
但我应该得到结果
结果:
11.50
12
有没有办法实现这个目标? tab2中的col2值应舍入为整数,并在结果中显示为整数。
实际上,查询并不是那么简单。
*我已编辑了我的问题以符合我的实际要求。*
答案 0 :(得分:1)
尝试以下内容,
SELECT CAST(col1 AS VARCHAR(10)) col1
FROM tab1 UNION
SELECT CAST(col2 AS VARCHAR(10)) col2
FROM tab2
正如@Giorgi Nakeur在评论中提到的那样不好但可以解决问题。
我认为根据您更新的问题,你想要这样的东西。见下文。
替代解决方案,
;WITH cte AS (
SELECT col1
FROM tab1 UNION ALL
SELECT ROUND(col2,0)
FROM tab2)
SELECT REPLACE(CAST(Col1 AS varchar(10)),'.00','') col1 FROM cte