generate_series в MySQL - PullRequest
       14

generate_series в MySQL

2 голосов
/ 21 сентября 2011

Что такое эквивалент generate_series() PostgreSQL в MySQL?

Как преобразовать этот запрос в MySQL?

select substr('some-string', generate_series(1, char_length('some-string')))

Пример вывода из PostgreSQL:

some-string
ome-string
me-string
e-string
-string
string
tring
ring
ing
ng
g

select generate_series(1, char_length('some-string'))

1
2
3
4
5
6
7
8
9
10
11

Окончательное решение:

CREATE TABLE `numberlist` (
 `id` tinyint(4) NOT NULL AUTO_INCREMENT,
 PRIMARY KEY (`id`)
)

INSERT INTO `numberlist` values(null)
(repeat the above query the maximum string you need)

SELECT substr('somestring', id) 
FROM numberlist 
WHERE id <= character_length('somestring')

1 Ответ

3 голосов
/ 21 сентября 2011

Вот концепция, но у меня не установлено mySQL на этом устройстве. Вам нужно будет создать таблицу целых чисел, используя AUTO INCREMENT. Таблица чисел, как правило, является удобной таблицей, доступной в базе данных, и ее нужно будет создать только один раз

create table NumberList (id MEDIUMINT NOT NULL AUTO_INCREMENT,fill char(1))

declare @x INT
set @x=0
while @x < 20
begin
    insert into numberList values(null)
    Set @x = @x+1
end 

Затем присоединитесь к этой таблице, как показано ниже, используя предложение LIMIT

select substr('somestring',id) 
from numberlist
limit len('somestring')

Я написал это на SQL-сервере, но это не должно быть слишком сложно для преобразования в MySQL ...

Код ниже ДОЛЖЕН работать в mySQL

DECLARE xx INT DEFAULT 0;
  WHILE xx < 20 DO
    insert into numberList values(null)        
    SET xx = xx + 1;
 END WHILE;
...