按MySQL字段中的单词数排序

时间:2012-11-03 23:46:59

标签: mysql sql-order-by

我想根据指定列中的单词数对MySQL查询的结果进行排序。

这样的事情:

SELECT bar FROM foo ORDER BY WordCountFunction(bar)

有可能吗?

3 个答案:

答案 0 :(得分:4)

据我所知,MySQL中没有字数统计功能,但如果数据格式正确,你可以计算空格数并加一个空格(单词空格分隔符,条目开头/结尾没有空格)

以下是首先列出最长字词的查询:

SELECT bar FROM foo ORDER BY (LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) DESC

答案 1 :(得分:2)

使用this method计算列中的字数,您的查询将如下所示:

SELECT bar FROM foo ORDER BY (LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) DESC

答案 2 :(得分:1)

是的,有点儿。但它不会100%准确:

SELECT SUM(LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) as count
FROM table
ORDER BY count DESC

但这假设单词用空格' '分隔,并不考虑标点符号。你总是可以用另一个char替换它,它也不会占用双倍空格或其他字符。

为了获得完整的准确性,您可以随时使用您选择的语言提取结果并计算字数 - 确实存在准确的字数统计功能!

希望这有帮助。