2

指定された列の単語数で MySQL クエリの結果を並べ替えたいと思います。

このようなもの:

SELECT bar FROM foo ORDER BY WordCountFunction(bar)

出来ますか?

4

3 に答える 3

5

私の知る限り、MySQL には単語カウント機能はありませんが、データが適切にフォーマットされていれば、スペースの数を数えて 1 つ追加できます (単語のスペース区切り、エントリの先頭/末尾にスペースはありません)。

次に、最も長い単語を最初にリストするクエリを示します。

SELECT bar FROM foo ORDER BY (LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) DESC
于 2012-11-03T23:52:22.207 に答える
2

このメソッドを使用して列内の単語数をカウントすると、クエリは次のようになります。

SELECT bar FROM foo ORDER BY (LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) DESC

于 2012-11-03T23:56:00.533 に答える
1

はい、そうです。ただし、100% 正確ではありません。

SELECT SUM(LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) as count
FROM table
ORDER BY count DESC

ただし、これは単語がスペースで区切られていることを前提としており' '、句読点は考慮されていません。いつでも別の文字に置き換えることができ、ダブルスペースやその他の文字も考慮されません。

完全な正確さのために、いつでも結果を引き出して、選択した言語で単語数を数えることができます-正確な単語数カウント機能が存在する場合!

お役に立てれば。

于 2012-11-03T23:52:37.447 に答える