powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбиение строки на массив
7 сообщений из 7, страница 1 из 1
Разбиение строки на массив
    #34921902
Alexey Agafonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, кто знает, как строку в PL/SQL разбить на массив и вообще это возможно? В таблице есть строковое поле и в нем данные вида '1,2,3,4'. Нужно в цикле брать очередную запись, разбивать ее на массив и проходится в еще одном вложенном цикле по этому массиву.
...
Рейтинг: 0 / 0
Разбиение строки на массив
    #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
Разбиение строки на массив
    #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
Разбиение строки на массив
    #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
Разбиение строки на массив
    #34922826
Nuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дык, у самих работает. Спасибо дяде Тому :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Разбиение строки на массив
    #39309384
bambus1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чем не вариант:
regexp_substr('Фамилия.Имя.Отчество','[^.]+',1,N)
где N - порядковый номер слова, можно пройтись в цикле, а разделитель любой(точка, запятая, пробел и т.д., любое их кол-во)
...
Рейтинг: 0 / 0
Разбиение строки на массив
    #39309404
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bambus1980Чем не вариант:Для гробокопателя - так себе.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбиение строки на массив
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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