我有一个包含简单单词的列(每行只有一个单词) 我需要从这个列中提取不超过10,000个字符的aprox。 (每次9000更安全)。
所以我需要一个查询来提取0到9000个字符
从9000到18000个字符中提取的下一个查询等等......
我看到一些像这样但是是整张桌子
SELECT SUM(CHAR_LENGTH(my_column)) FROM my_table;
可以在MySQL中实现吗?
答案 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)大于最大可能的单词。如果不是这样,你必须修改它。您可能还需要稍微调整一下,具体取决于您希望如何处理边界条件,但也许它是您需要的起点。