如何按字數統計我的查詢?可能嗎?MySQL:選擇按字數排序的行
我在表中有一些行,有文本字段。我想通過這些文本字段的字數對它們進行排序。
第二個問題是,我只需要選擇這些行,其中有例如最少10個字,或最高20
如何按字數統計我的查詢?可能嗎?MySQL:選擇按字數排序的行
我在表中有一些行,有文本字段。我想通過這些文本字段的字數對它們進行排序。
第二個問題是,我只需要選擇這些行,其中有例如最少10個字,或最高20
那麼,這將不執行得非常好,因爲字符串計算需要所有行執行:
你可以指望的字數在MySQL列像這樣:SELECT SUM(LENGTH(name) - LENGTH(REPLACE(name, ' ', ''))+1) FROM table
(前提是詞被定義爲「無論分隔按一個空白」)
現在,這種添加到您的查詢:
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>
由於我詢問了有關查詢,那麼你的答案是好的。但是,我當然不會使用這種方法,因爲字符串計算繁重。 – Karol
不應該使用'SUM'。只需使用'SELECT LENGTH(name) - LENGTH(REPLACE(name,'',''))+ 1' –
哦,我看到OP說「文本字段」pluarl,所以我可以看到SUM需要如何添加所有一起領域字計數。但上面的例子意味着一個單一的領域,這就是爲什麼我感到困惑。因此,爲了澄清我的上述評論,如果檢查多個列的總字數,確實需要SUM。 –
也許是這樣的:
SELECT Field1, SUM(LENGTH(Field2) - LENGTH(REPLACE(Field2, ' ', ''))+1)
AS cnt
FROM tablename
GROUP BY Field1
ORDER BY cnt
Field2
是字符串場你想在其中計算單詞。
它可以工作 - 謝謝,但我意識到,字符串操作將沉重的數據庫適配器,並更快地計算插入詞的權利。 – Karol
所以你真的在尋找一個函數'F',這樣'F''煎餅屋在哪兒?')'會返回4嗎? –
是的,我正在尋找它,但正如我現在看到的,沒有好的解決方法,所以我將不得不添加另一個字段的字段,然後它會很簡單。 – Karol