如何按字数对查询进行排序?可能吗?
我在表中有一些行,带有文本字段。我想按这些文本字段的字数对它们进行排序。
第二个问题是,我只需要选择这些行,例如最少 10 个单词或最多 20 个单词。
最佳答案
嗯,这不会执行得很好,因为需要对所有 行执行字符串计算:
您可以像这样计算 MySQL 列中的单词数:SELECT SUM( LENGTH(name) - LENGTH(REPLACE(name, ' ', ''))+1) FROM table
(前提是单词被定义为“whatever-delimited-by-a-whitespace”)
现在,将此添加到您的查询中:
SELECT
<fields>
FROM
<table>
WHERE
<condition>
ORDER BY SUM(LENGTH(<fieldWithWords>) - LENGTH(REPLACE(<fieldWithWords>, ' ', '')) + 1)
或者,将其添加到条件中:
SELECT
<fields>
FROM
<table>
WHERE
SUM(LENGTH(<fieldWithWords>) - LENGTH(REPLACE(<fieldWithWords>, ' ', '')) + 1) BETWEEN 10 AND 20
ORDER BY <something>
关于MySQL:选择按字数排序的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6516648/