查找表SQL的每一行中的总字数

时间:2014-10-21 02:40:37

标签: sql sql-server tsql

我有一个包含2列,ID和注释的表。是否可以找到每行注释列的总字数? 然后找到TOP 10字数?我整个下午一直在努力和失败。任何帮助将非常感激。如果您想了解更多信息,请询问。

2 个答案:

答案 0 :(得分:2)

如果您只是需要快速执行此操作,可以尝试以下查询。请注意,它只是粗略地使用空格进行单词边界。

SELECT TOP(10)(LEN(comment) - LEN(REPLACE(comment, ' ', '')) + 1)
FROM tblComments
ORDER BY (LEN(comment) - LEN(REPLACE(comment, ' ', ''))) DESC

但是,请注意,此查询不是一个特别有效的解决方案,我只会使用它,如果它是我试图解决的临时问题。如果性能是一个问题,例如需要构建到某种实时事务应用程序中的查询,我建议更好的方法是使用第三列的某种组合来存储字数和/或执行单词算在代码中。这样做还可以更好地分离逻辑和数据存储,并为您提供更加灵活的单词识别方式。

答案 1 :(得分:1)

尝试使用SQLSERVER中的DATALENGTH()函数:

DECLARE  @String VARCHAR(100)
        ,@CharToFind VARCHAR(1)
SET @String = 'AAAA BBBCB NNNNN NEEEEE ERERERERERE  '
SET @CharToFind = ' '
select DATALENGTH(@String)
SELECT CountOfWordsInTheString =  DATALENGTH(@String) - (DATALENGTH(REPLACE(@String,@CharToFind,''))+1)

您的查询如下所示:

SELECT TOP 10 id,DATALENGTH(comment) - ( DATALENGTH(Replace(comment, ' ', '')) + 1 )
FROM   tblname
ORDER  BY DATALENGTH(comment) - ( DATALENGTH(Replace(comment, ' ', '')) + 1 ) DESC