我想按指定列中的单词数对 MySQL 查询的结果进行排序。
像这样的东西:
SELECT bar FROM foo ORDER BY WordCountFunction(bar)
可能吗?
我想按指定列中的单词数对 MySQL 查询的结果进行排序。
像这样的东西:
SELECT bar FROM foo ORDER BY WordCountFunction(bar)
可能吗?
据我所知,MySQL 中没有字数统计功能,但是如果您的数据格式正确,您可以计算空格数并添加一个(单词的空格分隔符,条目开头/结尾没有空格)。
这是首先列出最长单词的查询:
SELECT bar FROM foo ORDER BY (LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) DESC
使用此方法计算列中的单词数,您的查询将如下所示:
SELECT bar FROM foo ORDER BY (LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) DESC
是的,有点。但它不会是 100% 准确的:
SELECT SUM(LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) as count
FROM table
ORDER BY count DESC
但这假设单词由空格分隔' '
并且不考虑标点符号。您总是可以用另一个字符替换它,它也不考虑双空格或其他字符。
为了完全准确,您可以随时提取结果并以您选择的语言进行字数统计 - 准确的字数统计功能确实存在!
希望这可以帮助。