2

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

像这样的东西:

SELECT bar FROM foo ORDER BY WordCountFunction(bar)

可能吗?

4

3 回答 3

5

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

这是首先列出最长单词的查询:

SELECT bar FROM foo ORDER BY (LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) DESC
于 2012-11-03T23:52:22.207 回答
2

使用此方法计算列中的单词数,您的查询将如下所示:

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

于 2012-11-03T23:56:00.533 回答
1

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

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

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

为了完全准确,您可以随时提取结果并以您选择的语言进行字数统计 - 准确的字数统计功能确实存在!

希望这可以帮助。

于 2012-11-03T23:52:37.447 回答