TSQL格式为百分比
问题描述:
我有以下SQL语句:TSQL格式为百分比
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',但我有很多联合体,只有一行必须具有百分比格式。有没有其他可用的替代品?
谢谢!
答
试试这个
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) + '%'
答
您需要以CAST所有联合条款。
最终输出中的每一行都有highest precedence datatype。 int
比varchar
高,所以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) + '%'
或者为int:你不能有不同的数据类型/格式的一列。
当然,这是一个例子,但混合整数和浮点数格式是没有意义的,即使SQL并允许它
+0
+1感谢解释最高优先级数据类型的数据混合,我不知道SQL服务器是如何确定的数据类型的列。 – campo 2011-03-21 05:50:17
你能解释一下你为什么要这样,请 – gbn 2011-03-21 05:36:29