powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / ExtractValue результат как список строк
4 сообщений из 4, страница 1 из 1
ExtractValue результат как список строк
    #38459345
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполняю запрос
Код: sql
1.
2.
set @xml = '<?xml version="1.0"?><search><group><field name="imageid" relation="oneof"><listitem>47901</listitem><listitem>47902</listitem><listitem>11827</listitem></field></group></search>';
select extractValue(@xml,'/search/group/field/listitem');


Получаю строку с перечислением значений
'47901 47902 11827'

А мне нужно получить набор строк, в каждой строке по одному значению
(чтобы результат extractValue сразу применить в ждойне к другой таблице)
47901
47902
11827

Я неправильно запрос написал ?
Может быть нужно оформить это в виде табличной функции ?( как ?)
Или иначе можно сделать ?
...
Рейтинг: 0 / 0
ExtractValue результат как список строк
    #38459397
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели с 2007 года нет никакого движения по этому вопросу ?
и только так :
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE PROCEDURE test
BEGIN
  DECLARE xml TEXT;
  DECLARE entries INT;
  DECLARE entry INT DEFAULT 1;
  SET xml= '<a><b>Sakila</b> <b>TEST</b></a>'
  SET entries= ExtractValue(xml, count('/a/b'));
  WHILE entry <= entries DO
    BEGIN
      DECLARE val VARCHAR(255);
      SET val= ExtractValues(xml, '/a/b[$entry]');
      -- do INSERT into a table here, or whatever else you need
    SET entry= entry + 1;
    END;
  END WHILE;
END
...
Рейтинг: 0 / 0
ExtractValue результат как список строк
    #38459601
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
set @xml = '<?xml version="1.0"?><search><group><field name="imageid" relation="oneof"><listitem>47901</listitem><listitem>47902</listitem><listitem>11827</listitem></field></group></search>';
SET @s= REPLACE( extractValue(@xml,'/search/group/field/listitem'),' ','),(') ;


SET @d=CONCAT('INSERT HIGH_PRIORITY INTO tmp(xx) VALUES (',@s,')');
PREPARE eee FROM @d;
EXECUTE eee;
DEALLOCATE PREPARE eee;



где tmp временная таблица в памяти
чтоб ждойне к другой даблице данные должны быть в таблице
...
Рейтинг: 0 / 0
ExtractValue результат как список строк
    #38459906
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Спасибо за подсказку.
Сравню реализации - какая быстрее будет.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / ExtractValue результат как список строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]