powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Разбор строки
4 сообщений из 4, страница 1 из 1
Разбор строки
    #35984306
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASE 15.0.3.
Есть приславутая функция list() в SQL Anywhere. Как организовать ее в ASE я знаю, но как добиться обратного? Есть строка(1,2,3,33,654,...,n), как ее распихать в строки одного столбца?

Заранее спасибо!
...
Рейтинг: 0 / 0
Разбор строки
    #35984601
Марсель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в asa есть такая ф-ция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
call dbo.sa_make_object('procedure','sa_split_list','dbo')
go

alter procedure dbo.sa_split_list( in str long varchar, in delim char( 10 ) default ',', in maxlen int default  0  )
result( line_num int, row_value long varchar )
begin
    declare pos int;
    declare startpos int;
    declare delimlen int;
    declare local temporary table tresult(
	line_num int primary key default autoincrement,
	row_value long varchar
    ) in SYSTEM not transactional;
    set startpos =  1 ;
    set delimlen = length( delim );
    if delimlen >  0  then
	lp: loop
	    set pos = locate( str, delim, startpos );
	    if (pos is null) or (pos =  0 ) then 
			leave lp 
	    end if;
	    if maxlen <>  0  and (pos - startpos) > maxlen then
			set pos = startpos + maxlen;
	    end if;
	    insert into tresult( row_value )
		select substr( str, startpos, pos - startpos );
	    set startpos = pos + delimlen;
	end loop;
	if length( str ) >= startpos then
	    insert into tresult( row_value ) values( substr( str, startpos ) );
	end if;
    end if;
    select line_num, row_value 
    from tresult
    order by line_num;
end
go

grant execute on dbo.sa_split_list to PUBLIC
go
...
Рейтинг: 0 / 0
Разбор строки
    #35987018
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подробный обзор подходов к вопросу обработки списков:
Массивы и Списки в SQL Server
Скрипты в статье для MS SQL, но их можно переделать под ASE

Сам я предпочитаю передавать списки в хранимые процедуры только через временные таблицы.
...
Рейтинг: 0 / 0
Разбор строки
    #35987131
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем, пазлы более-менее сложились.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Разбор строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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