Преобразование строки (или столбца) с разделителями в строки в Oracle с использованием предопределенной системной функции

#sql #oracle #plsql

#sql #Oracle #plsql

Вопрос:

Несколько лет назад в Oracle 10 или 9 я использовал функцию, которая была чем-то вроде «DBMS_COL_2_VAL» (это определенно неправильная функция).

Целью этой встроенной функции является преобразование предоставленной строки в строки на основе указанного разделителя. Я знаю, что существует несколько способов преобразования строки с разделителями в строки, но то, что я ищу, — это эта конкретная функция.

Если вы можете помочь, это было бы здорово.

Пожалуйста, не предоставляйте никаких решений с помощью CONNECT, CASE или REGEX.

Спасибо

Комментарии:

1. Интересный вопрос. В Sybase была отличная функция aggregate LIST (<строка>), которая вроде бы делала противоположное тому, что вы просите. Для этого потребуется столбец и объединить строки в список, разделенный запятыми.

Ответ №1:

Функция, которую я пытался найти, была SYS.DBMS_DEBUG_VC2COLL .

Технически говоря, это не преобразует строку с разделителями в столбец, но преобразует список значений, разделенных запятыми, в строки. Я понял это после того, как нашел старый пост.

Пример кода и результаты:

 with test as  (
    select column_value AS c1  
      from table( SYS.DBMS_DEBUG_VC2COLL( 'a','b','c' ) )  
   )  
 select * from test;
  

Результат:

 c1   
__  
a    
b    
c    
  

Ответ №2:

Может быть, вы думаете об этом?

 DBMS_UTILITY.COMMA_TO_TABLE ( 
   list   IN  VARCHAR2,
   tablen OUT BINARY_INTEGER,
   tab    OUT uncl_array); 

DBMS_UTILITY.COMMA_TO_TABLE ( 
   list   IN  VARCHAR2,
   tablen OUT BINARY_INTEGER,
   tab    OUT lname_array);