powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как получить количество вхождений элемента в коллекции?
8 сообщений из 8, страница 1 из 1
как получить количество вхождений элемента в коллекции?
    #39678844
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare
	type t is table of number;
	x constant t := t(1, 2, 3, 2, 3, 4, 3, 4, 5);
	y constant number := 3;
	c pls_integer := 0;
begin
	for i in 1..x.count loop
		if y = x(i) then
			c := c + 1;
		end if;
	end loop;
	dbms_output.put_line('c=' || c);
end;
/

можно ли сделать то же самое, но проще? (наподобие member of или типа того)
...
Рейтинг: 0 / 0
как получить количество вхождений элемента в коллекции?
    #39678853
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--можно ли сделать то же самое, но проще? (наподобие member of или типа того)А в документации поискать эти "типа того"?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
declare
  type t is table of number;
  x constant t := t(1, 2, 3, 2, 3, 4, 3, 4, 5);
  y constant number := 3;
  c pls_integer := 0;
  z t := t(y);
begin
  z.extend(1e3, 1);
  z := x multiset except all z;
  dbms_output.put_line('c=' || (x.count - z.count));
end;
/

...
Рейтинг: 0 / 0
как получить количество вхождений элемента в коллекции?
    #39678877
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

вы, конечно, не согласитесь, но, на мой взгляд, это еще сложнее, чем перебор в цикле. да еще и ограничение есть по количеству (extend(1e3))
...
Рейтинг: 0 / 0
как получить количество вхождений элемента в коллекции?
    #39678884
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--это еще сложнееЭто зависит от системы ценностей. И от отношения к сарказму
...
Рейтинг: 0 / 0
как получить количество вхождений элемента в коллекции?
    #39678886
brzl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
с небольшим Но
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare

    x sys.odcinumberlist := sys.odcinumberlist(1, 2, 3, 2, 3, 4, 3, 4, 5);
    y constant number := 3;
    c pls_integer := 0;
begin
    select count(case when column_value = y then 1 end)
    into c
    from table(x);
    dbms_output.put_line('c=' || c);
end;
...
Рейтинг: 0 / 0
как получить количество вхождений элемента в коллекции?
    #39678918
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
brzl,

я же спрашивал *попроще*, а не посложнее
...
Рейтинг: 0 / 0
как получить количество вхождений элемента в коллекции?
    #39678957
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если попроще это меньше буковок, то создай SQL тип:

Код: plsql
1.
2.
3.
4.
create or replace
  type numlist
    as table of number
/



И:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select  count(*)
  from  table(numlist(1, 2, 3, 2, 3, 4, 3, 4, 5))
  where column_value = 3
/

  COUNT(*)
----------
         3

SQL> 



SY.
...
Рейтинг: 0 / 0
как получить количество вхождений элемента в коллекции?
    #39679005
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--Elic,

вы, конечно, не согласитесь, но, на мой взгляд, это еще сложнее, чем перебор в цикле. да еще и ограничение есть по количеству (extend(1e3))

замените на z.extend(x.count, 1); для полного соответствия даже думаю z.extend(x.count-1, 1); хватит
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как получить количество вхождений элемента в коллекции?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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