MySQL:选择按字数排序的行

标签 mysql select sql-order-by

如何按字数对查询进行排序?可能吗?

我在表中有一些行,带有文本字段。我想按这些文本字段的字数对它们进行排序。

第二个问题是,我只需要选择这些行,例如最少 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/

相关文章:

php - MySQL 表和 JSON 解析。是否有外键?

c# - 复杂的 SQL 查询数据绑定(bind)到 DataGrid

mysql - 如何在 Select 语句中使用 IF() [控制流函数] case?

连接数据的 MySQL 条件

r - 根据列索引向量选择 data.table 值

MySQL连接两个表以获取子表的限制记录

php mysql emoji 双字符

php - 删除-查询花费太多时间

php - 如何使用 MySql (ID 1-20) 按 ID 排序?

mysql - ORDER BY 然后 GROUP BY 日期时间值