如何按字数统计我的查询?可能吗?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