mysql如何使用LIMIT与SELECT SUM CHAR_LENGTH

时间:2017-10-31 21:26:13

标签: mysql

我有一个包含简单单词的列(每行只有一个单词) 我需要从这个列中提取不超过10,000个字符的aprox。 (每次9000更安全)。

所以我需要一个查询来提取0到9000个字符

从9000到18000个字符中提取的下一个查询等等......

我看到一些像这样但是是整张桌子

SELECT SUM(CHAR_LENGTH(my_column)) FROM my_table;

可以在MySQL中实现吗?

1 个答案:

答案 0 :(得分:1)

我假设你想要用文字来分解,而不仅仅是文字块。如果您想要的只是字符块(不关心字边界)并且您的表格足够小,您可能只需执行类似

的操作
SET SESSION group_concat_max_len = 1000000; -- Need this to be much larger than default
SELECT substr(group_concat(my_column), 9000, 9000)
FROM my table

假设你关心列边界,我首先想到的是你可以将字符总数除以这一点:

SELECT my_column
FROM
(
 SELECT my_column, ((SELECT SUM(CHAR_LENGTH(my_column)) FROM my_table mt2 WHERE mt2.my_key <= mt1.my_key)) as endidx
 FROM my_table mt1
) mt
WHERE endidx > 9000 and endidx <= 9000 + 9000

Here's an SQL Fiddle to play around with that query a bit

我不相信这会很好地扩展,但我认为这样的事情原则上是有效的。请注意,这里有一个很大的假设,即您的增量(9000)大于最大可能的单词。如果不是这样,你必须修改它。您可能还需要稍微调整一下,具体取决于您希望如何处理边界条件,但也许它是您需要的起点。