один способ сделать это (при условии, что все идентификаторы больше, чем 100, и вы не имеете более чем 100 в одном ряду если вы просто изменяете предложение HAVING соответственно) составляет временную таблицу цифр, которая содержит 1-999, а затем присоединяется к этой таблице ... если у вас более 1000 в одной строке идентификатора, тогда у вас есть другие проблемы для решения ,
CREATE TEMPORARY TABLE digits AS
SELECT
SEQ.SeqValue
FROM
( SELECT (HUNDREDS.SeqValue + TENS.SeqValue + ONES.SeqValue) SeqValue
FROM(SELECT 0 SeqValue UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) ONES
CROSS JOIN(SELECT 0 SeqValue UNION ALL SELECT 10 UNION ALL SELECT 20 UNION ALL SELECT 30 UNION ALL SELECT 40 UNION ALL SELECT 50 UNION ALL SELECT 60 UNION ALL SELECT 70 UNION ALL SELECT 80 UNION ALL SELECT 90) TENS
CROSS JOIN(SELECT 0 SeqValue UNION ALL SELECT 100 UNION ALL SELECT 200 UNION ALL SELECT 300 UNION ALL SELECT 400 UNION ALL SELECT 500 UNION ALL SELECT 600 UNION ALL SELECT 700 UNION ALL SELECT 800 UNION ALL SELECT 900) HUNDREDS
) SEQ
после создания таблицы цифры использовать этот запрос, чтобы очистить случайный материал
SELECT
REPLACE(REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(huge_str, 'i:', n.digit+1), 'i:', -1), ';', ''), '}', '') cleaned_str
FROM (SELECT SUBSTRING(huge_str, 6) AS huge_str FROM mashed_shit) t
JOIN(SELECT seqvalue AS digit FROM digits) n
ON LENGTH(REPLACE(huge_str, 'i:' , '')) <= LENGTH(huge_str)-n.digit
GROUP BY cleaned_str
HAVING cleaned_str >= 10
ORDER BY n.digit
О мальчик .. Это данные из реальной базы данных? – Alternatex
Все эти данные объединены в одну колонку? –
мать встроенных данных ... это все, что строка? в одной колонке? –