为什么不能在文本上使用COUNT()方法?

时间:2015-01-19 12:07:42

标签: sql sql-server

虽然此问题的解决方法已涵盖herehere,但为什么您实际上无法在文本数据类型上使用COUNT()?这是技术限制吗?有谁知道内部机制驱动了什么?

2 个答案:

答案 0 :(得分:1)

我猜你已经找到了解决方案,但是对于其他寻找答案的人来说,这会有效。 case语句为找到非空或空字符串的每一行返回1,为每行空或Null返回0。它适用于字符和数字字段。外部的Sum()函数有效地返回计数:

select sum(
     case when YourField >'' then 1
     else 0
     end
) 'mycount'
from YourTable

答案 1 :(得分:1)

回答你的实际问题:

旧的大格式/ LOB数据类型:TEXT,NTEXT和IMAGE,是具有许多技术限制的过时/过时数据类型(例如,您无法直接在其中使用UPDATE)。

Microsoft在SQL Server 2005发行版中修复此问题,但为了保持与先前版本的兼容性,使用三种 new 数据类型:VARCHAR(MAX),NVARCHAR(MAX)和VARBINARY(MAX) )。您应该切换到使用这些数据类型,这几乎在所有方面都更好。