指定された列の単語数で MySQL クエリの結果を並べ替えたいと思います。
このようなもの:
SELECT bar FROM foo ORDER BY WordCountFunction(bar)
出来ますか?
指定された列の単語数で MySQL クエリの結果を並べ替えたいと思います。
このようなもの:
SELECT bar FROM foo ORDER BY WordCountFunction(bar)
出来ますか?
私の知る限り、MySQL には単語カウント機能はありませんが、データが適切にフォーマットされていれば、スペースの数を数えて 1 つ追加できます (単語のスペース区切り、エントリの先頭/末尾にスペースはありません)。
次に、最も長い単語を最初にリストするクエリを示します。
SELECT bar FROM foo ORDER BY (LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) DESC
このメソッドを使用して列内の単語数をカウントすると、クエリは次のようになります。
SELECT bar FROM foo ORDER BY (LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) DESC
はい、そうです。ただし、100% 正確ではありません。
SELECT SUM(LENGTH(bar) - LENGTH(REPLACE(bar, ' ', ''))+1) as count
FROM table
ORDER BY count DESC
ただし、これは単語がスペースで区切られていることを前提としており' '
、句読点は考慮されていません。いつでも別の文字に置き換えることができ、ダブルスペースやその他の文字も考慮されません。
完全な正確さのために、いつでも結果を引き出して、選択した言語で単語数を数えることができます-正確な単語数カウント機能が存在する場合!
お役に立てれば。