Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбиение строки на массив / 7 сообщений из 7, страница 1 из 1
07.11.2007, 13:50:26
    #34921902
Alexey Agafonov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбиение строки на массив
Здравствуйте, кто знает, как строку в PL/SQL разбить на массив и вообще это возможно? В таблице есть строковое поле и в нем данные вида '1,2,3,4'. Нужно в цикле брать очередную запись, разбивать ее на массив и проходится в еще одном вложенном цикле по этому массиву.
...
Рейтинг: 0 / 0
07.11.2007, 14:05:33
    #34921960
Nuri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбиение строки на массив
Позаимствовано у дяди Тома:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
TYPE "MYARRAY" as table of varchar2( 255 );

FUNCTION str2table(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)
    RETURN myArray AS
    l_data   myArray := myArray();
    l_string LONG := p_string;
    l_n      NUMBER;
  BEGIN
    WHILE (l_string IS NOT NULL) LOOP
      l_n := instr(l_string, p_delimiter);
      IF (l_n =  0 ) THEN
        l_n := length(l_string) +  1 ;
      END IF;
      l_data.EXTEND;
      l_data(l_data.COUNT) := substr(l_string,  1 , l_n -  1 );
      l_string := substr(l_string, l_n +  1 );
    END LOOP;
    RETURN l_data;
  END;
...
Рейтинг: 0 / 0
07.11.2007, 14:06:54
    #34921964
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбиение строки на массив
Alexey Agafonov wrote:

> Здравствуйте, кто знает, как строку в PL/SQL разбить на массив и вообще
> это возможно? В таблице есть строковое поле и в нем данные вида
> '1,2,3,4'. Нужно в цикле брать очередную запись, разбивать ее на массив
> и проходится в еще одном вложенном цикле по этому массиву.

http://www.sql.ru/faq/faq_topic.aspx?fid=172
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
07.11.2007, 16:37:20
    #34922742
Alexey Agafonov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбиение строки на массив
NuriПозаимствовано у дяди Тома:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
TYPE "MYARRAY" as table of varchar2( 255 );

FUNCTION str2table(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)
    RETURN myArray AS
    l_data   myArray := myArray();
    l_string LONG := p_string;
    l_n      NUMBER;
  BEGIN
    WHILE (l_string IS NOT NULL) LOOP
      l_n := instr(l_string, p_delimiter);
      IF (l_n =  0 ) THEN
        l_n := length(l_string) +  1 ;
      END IF;
      l_data.EXTEND;
      l_data(l_data.COUNT) := substr(l_string,  1 , l_n -  1 );
      l_string := substr(l_string, l_n +  1 );
    END LOOP;
    RETURN l_data;
  END;


Вот этот прекрасно работает. Спасибо, Nuri.
...
Рейтинг: 0 / 0
07.11.2007, 16:53:47
    #34922826
Nuri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбиение строки на массив
Дык, у самих работает. Спасибо дяде Тому :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
15.09.2016, 04:12:51
    #39309384
bambus1980
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбиение строки на массив
Чем не вариант:
regexp_substr('Фамилия.Имя.Отчество','[^.]+',1,N)
где N - порядковый номер слова, можно пройтись в цикле, а разделитель любой(точка, запятая, пробел и т.д., любое их кол-во)
...
Рейтинг: 0 / 0
15.09.2016, 07:43:16
    #39309404
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбиение строки на массив
bambus1980Чем не вариант:Для гробокопателя - так себе.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбиение строки на массив / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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