Идея, которой я хочу поделиться, не является точным ответом на вопрос, но может быть полезна для некоторых, поэтому я хотел бы поделиться ею.
Если вам часто требуется только ограниченный набор чисел, то может быть полезно создать таблицу с числами, которые вам могут понадобиться, и просто использовать эту таблицу каждый раз. Например:
CREATE TABLE _numbers (num int);
INSERT _numbers VALUES (0), (1), (2), (3), ...;
Это может быть применено, только если вам нужны числа ниже определенного разумного предела, поэтому не используйте его для генерации последовательности 1 ... 1 миллион, но можно использовать, например, для чисел 1 ... 10k.
Если у вас есть этот список чисел в таблице _numbers
, вы можете написать запрос, подобный этому, для получения отдельных символов строки:
SELECT number, substr(name, num, 1)
FROM users
JOIN _numbers ON num < length(name)
WHERE user_id = 1234
ORDER BY num;
Если вам нужны числа больше 10k, вы можете присоединить таблицу к себе:
SELECT n1.num * 10000 + n2.num
FROM _numbers n1
JOIN _numbers n2
WHERE n1 < 100
ORDER BY n1.num * 10000 + n2.num; -- or just ORDER BY 1 meaning the first column