Как разделить строку на оракул массива?

Как разделить строку на оракул массива?

'3/5/7'

Результат:

15

Всегда ли в строках будет ровно три числа? Можете ли вы добавить больше образцов данных? Обратите внимание, что раньше Oracle не поддерживал массивы.

Tim Biegeleisen 02.02.2023 13:04
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
67
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать xmltable для создания строк из строки:

Принимаются дополнительные номера.

select sum(to_number(column_value)) as SOMME from xmltable(REPLACE('3/5/7', '/', ','));

Демо здесь

Создайте фиктивные строки (ниже: SELECT ROWNUM pos FROM dual CONNECT BY LEVEL <= 10), больше, чем количество элементов, которое вы ожидаете когда-либо иметь. Здесь я использовал 10, вы можете сделать 100 или 1000, если хотите. Пометьте каждую строку цифрой ROWNUM. Затем используйте это как операнд в функции SUBSTR. Это можно сделать и с помощью SUBSTR_REGEXP, возможно, более лаконично. Это будет токенизировать вашу строку. Затем все, что вам нужно сделать, это агрегировать результаты с помощью SUM.

SELECT SUM(item)
  FROM (SELECT value,
               pos,
               SUBSTR(value,INSTR(value,'/',1,pos)+1,INSTR(value,'/',1,pos+1)-(INSTR(value,'/',1,pos)+1)) item
          FROM (SELECT '/'||'3/5/7'||'/' value from dual),
               (SELECT ROWNUM pos FROM dual CONNECT BY LEVEL <= 10))
 WHERE item IS NOT NULL   

        

Другие вопросы по теме