tsql格式为百分比

时间:2011-03-21 05:27:55

标签: tsql

我有以下sql语句:

SELECT 1, 2, 3

UNION ALL

SELECT CAST(1 AS VARCHAR) + '%',CAST(2 AS VARCHAR) + '%',CAST(3 AS VARCHAR) + '%'

我收到以下错误:

Conversion failed when converting the varchar value '1%' to data type int.

我可以将第一个select语句更改为'1','2','3',但我有很多联合,只有一行必须具有百分比格式。还有其他可用的替代方案吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

需要来CAST所有联合条款。

最终输出中的每一行都有highest precedence datatypeint高于varchar,因此将1%转换为int,结果明显

select cast(1 as varchar), cast(2 as varchar), cast(3 as varchar)
union all
select cast(1 as varchar) + '%',cast(2 as varchar) + '%',cast(3 as varchar) + '%'

或者:您不能在一列中使用不同的数据类型/格式。

当然这是一个例子,但即使SQL确实允许它,混合整数和格式化的浮点数也没有意义

答案 1 :(得分:1)

试试这个

select cast(1 as varchar) ,cast(2 as varchar), cast(3 as varchar)

union all

select cast(1 as varchar) + '%',cast(2 as varchar) + '%',cast(3 as varchar) + '%'

错误原因是你选择了1,2,3这是一个整数值并且你正在与varchar值结合

因此,您需要将选择数据类型转换为varchar

第二个解决方案是

Select cast(col1 as varchar),cast(col2 as varchar),........... from
(
   .. all your union large query you have writting
) d

union all
select cast(1 as varchar) + '%',cast(2 as varchar) + '%',cast(3 as varchar) + '%'