【发布时间】:2015-01-19 12:07:41
【问题描述】:
【问题讨论】:
-
为什么没有意义?作为非 MS SQL Server 用户,我不明白为什么?聚合函数 COUNT 应该适用于所有数据类型。如果列值不为空,则计入,如果为空,则不计入。
-
有很多你不能在文本上做的事情,你可以在例如varchars上做。这也是不推荐使用数据类型的原因。如果必须使用文本,您应该按照@a_horse_with_no_name 的建议进行操作。但具体的实现限制我不知道。
-
是的,正如 jarlh 所说,我们知道解决方案。但是,为什么不能指望任何数据类型?
-
不知道原因。假设它是历史性的。即使没有强制转换,使用
COUNT(CASE WHEN YourTextCol IS NOT NULL THEN 1 END)也是微不足道的,尽管因此怀疑它是否存在任何技术限制。可能只是一些从未实施过的东西,也永远不会被弃用。 -
一个不同的内部机制是文本的内部存储总是“行外”。替换
nvarchar(max)可以“按行”存储部分数据(8000 字节),并且不必执行任何 LOB 读取来确定该值是否为空。是这个原因吗?不,我不这么认为。原因可能是因为该数据类型已被弃用,并且由于在 SQL Server 2000 或类似的东西中添加了替代品,因此没有对其进行更多开发。
标签: sql sql-server