我想按指定列中的字数排序MySQL查询的结果。按MySQL字段中的字数排序
事情是这样的:
SELECT bar FROM foo ORDER BY WordCountFunction(bar)
这可能吗?
我想按指定列中的字数排序MySQL查询的结果。按MySQL字段中的字数排序
事情是这样的:
SELECT bar FROM foo ORDER BY WordCountFunction(bar)
这可能吗?
据我所知,在MySQL中没有字数统计功能,但是如果数据格式正确,你可以计算空格的数量并添加一个(空格分隔符为单词,在开始/结束时没有空格)。
下面是该查询首先列出最长的一句话:
SELECT bar FROM foo ORDER BY (LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) DESC
+1这就是我所说的一个很好的黑客! – Nelson
是,排序的。它不会是100%准确,但:
SELECT SUM(LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) as count
FROM table
ORDER BY count DESC
但这是假设的话都用空格隔开' '
并没有考虑标点。您可以随时用另一个字符替换它,但它不占用双空格或其他字符。
为了获得完整的准确度,您可以随时将结果和单词计数以您选择的语言 - 确实存在准确的单词计数功能!
希望这会有所帮助。
我同意用外部语言进行单词计数可能更容易 - 您可以只使用标记器并正确修剪。替换空间似乎有点像黑客解决方案。 –
@StevenLiao是的,用作近似值,这是一个很好的技巧,但对于书面文本却不准确100%。如果你有很多领域需要扫描并返回一个近似的结果集,那就太好了。 – nickhar
使用this method来算的话在一列中的数字,您的查询应该是这样的:
SELECT bar FROM foo ORDER BY (LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) DESC
检查MySQL的长度()! http://stackoverflow.com/questions/1870937/mysql-how-to-select-data-by-string-length – Vucko
这些文字用什么语言书写? – Jocelyn
@Vucko正确的拼写是'LENGTH'。这个函数不会返回文本中的单词数量。 – Jocelyn