MySQL:选择按字数排序的行

时间:2011-06-29 06:37:51

标签: mysql select sql-order-by

如何通过字数统计我的查询?有可能吗?

我在表格中有一些行,带有文本字段。我想通过这些文本字段的字数来订购它们。

第二个问题是,我只需要选择这些行,例如最少10个字,或者最多20个。

2 个答案:

答案 0 :(得分:4)

好吧,由于需要对所有行执行字符串计算,因此效果不会很好:

您可以计算MySQL列中的单词数量,如下所示:SELECT SUM( LENGTH(name) - LENGTH(REPLACE(name, ' ', ''))+1) FROM table(假设单词定义为“any-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>

答案 1 :(得分:2)

也许是这样的:

SELECT Field1, SUM( LENGTH(Field2) - LENGTH(REPLACE(Field2, ' ', ''))+1)
 AS cnt
FROM tablename
GROUP BY Field1
ORDER BY cnt

Field2是您想要计算单词的字符串字段。