問題を解決するには、テーブルを使用する必要がありnumbers
ます。整数のテーブル、1、2、3、....最大値(1024など)まで。
次に、 StringWalkingを使用して問題を解決します。
テーブルのCREATETABLEステートメントは次のnumbers
とおりです。
CREATE TABLE numbers (
`n` smallint unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`n`)
)
;
INSERT INTO numbers VALUES (NULL);
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
上記には値1..1024が入力されます
そして今、クエリ:
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(ExtractValue(@XML, '/As/A/B'), ' ', n), ' ', -1) AS value
FROM
numbers
WHERE
n BETWEEN 1 AND ExtractValue(@XML, 'count(/As/A/B)')
;
+-------+
| value |
+-------+
| Chan |
| Shey |
| Bob |
+-------+
3 rows in set (0.02 sec)
ExtractValue(@XML, 'count(/As/A/B)')
値3-一致するXML要素の数を取得するために使用します。
番号1、2、3を実行して、テキストからトークン#1、トークン#2、トークン#3を抽出CHAN SHEY BOB
し、スペースで分割します。
ノート:
幸運を!