我想根据指定列中的单词数对MySQL查询的结果进行排序。
这样的事情:
SELECT bar FROM foo ORDER BY WordCountFunction(bar)
有可能吗?
答案 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替换它,它也不会占用双倍空格或其他字符。
为了获得完整的准确性,您可以随时使用您选择的语言提取结果并计算字数 - 确实存在准确的字数统计功能!
希望这有帮助。