在文本值上使用SUM时出错

时间:2013-09-14 19:53:46

标签: sql sql-server-2008-r2

当我跑步时

SELECT SUM(CASE column1 WHEN 'sometext' THEN 1 ELSE 0 END)
FROM table1

我收到以下错误:

  

数据类型text和varchar在等于运算符中不兼容。

该列是数据类型text所以我尝试了以下但是得到了同样的错误。有什么想法吗?

SELECT SUM(CASE column1 WHEN CAST('sometext' AS VARCHAR (40)) THEN 1 ELSE 0 END)
FROM table1

2 个答案:

答案 0 :(得分:0)

这个有效:

select sum(case when cast(column1 as varchar(max)) = 'sometext' then 1 else 0 end)
from table1

<强> sql fiddle demo

答案 1 :(得分:0)

您必须将该列与值进行比较,如果该列不是varchar或ntext,则必须转换数据类型,否则无需输入类型,您只需使用,

select sum(case when column1 = 'sometext' then 1 else 0 end)
from table1

如果column1不是string,那么可以使用

select sum(case when cast(column1 as varchar(max)) = 'sometext' then 1 else 0 end)
from table1

如果column1是ntext,那么你可以使用

select sum(case when cast(column1 as nvarchar(max)) = N'sometext' then 1 else 0 end)
from table1

您也可以在此处查看此答案:http://techsharehub.blogspot.com/2013/09/compare-string-int-and-ntext-with.html