2

generate_series()MySQLでのPostgreSQLの同等物は何ですか?

このクエリを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')
4

1 に答える 1

3

これがコンセプトですが、このボックスに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;
于 2011-09-20T21:27:04.497 に答える