我有一个数据库,我想根据每个字段中包含的字数对一列进行排序。
前:
a b (has 2 words)
a b c d e (has 5 words)
a b c (has 3 words)
我希望'a b c d e'成为排序结果中的第一个,'b b'是第二个。 ..等等
你有解决方案吗?
编辑:谢谢你们的回答! 所有答案都很好但同时我使用mysql-substr-count
中找到的相同解决方案解决了答案 0 :(得分:1)
这应该可以解决问题,但也许有更好(更快)的解决方案:
SELECT *
FROM table
ORDER BY LENGTH(column) - LENGTH(REPLACE(column, ' ', ''))
答案 1 :(得分:1)
哼 - here是关于如何计算一列中的单词的示例。也许它可以像这样扩展
SELECT
SUM( LENGTH(`name`) - LENGTH(REPLACE(`name`, ' ', ''))+1) AS `num_words`
FROM `table`
ORDER BY `num_words`
(未经测试 - 抱歉。)
答案 2 :(得分:0)
您可以按空格数排序:
order by length(field) - length(replace(field, ' ', '')) desc
答案 3 :(得分:0)
您的数据库结构很可能出错。如果你问这样的问题。
这样的数字应该取自数据库结构,而不是字段内容
由于这种糟糕设计的直接结果是上述答案中所有查询的糟糕表现。