(sql)当数据类型是文本时,如何使用count()方法?

时间:2011-12-26 09:37:14

标签: sql sql-server

select count(category) from list where category like 'action'

上面是我想要运行的查询。但是,当我运行该查询时,我得到了 数据类型错误。
count()的替代方法吗?或者...我如何使用count()方法
当数据类型是文本?

3 个答案:

答案 0 :(得分:2)

您无法在text,ntext,image数据类型上应用COUNT()函数。

为什么你不能使用:

select count(*) from list where category like 'action'

?你有一些空吗?

如果您不必排除空值,则上述查询可能已经正常运行...

答案 1 :(得分:2)

要回答未来googlers标题中的问题,您可以使用

SELECT COUNT(CASE
               WHEN some_text_column IS NOT NULL THEN 1
             END)
FROM   some_table

在您的情况下(正如@hvd的评论中指出的那样),WHERE category LIKE 'action'谓词可确保排除任何NULL值,因此可以安全地将其替换为{ {1}}

此外,您几乎肯定不应该使用COUNT(*)数据类型。这是一种不推荐使用的数据类型,用于保存超过8000字节的LOB(大对象)数据。

像“动作”这样的字符串肯定不适合这种描述!

答案 2 :(得分:-1)

count()始终返回int类似的内容。

使用int访问者读取结果数据:例如。 getInt(1)