2013-10-25 8 views
5

Интересно, возможно ли следующее.SQL Внутреннее соединение с возвращаемой функцией функцией

У меня есть функция SQL, которая разделяет строку, разделенную на кому, возвращающую таблицу с разбитыми значениями.

Привет, мое имя, это, Джон

возвращает таблица:

ITEM 
----- 
hello 
my name 
is 
John 

А имеет таблицу, хранящие, для каждой строки, идентификатора и кома, разделенная строки:

VALUE_TO_SPLIT 
-------------- 
1 | a,b,c 
1 | d,e,f,g 
2 | a,b 
3 | a 
3 | b,c,f 

Без использования курсоров можно ли получить итоговую таблицу?

RESULTING_TABLE 
1 | a 
1 | b 
1 | c 
1 | d 
1 | e 
1 | f 
1 | g 
2 | a 
2 | b 
3 | a 
3 | b 
3 | c 
3 | f 

То есть, строки для каждого разбитого значения с его идентификатором.

+2

Вы используете MySQL или SQL Server? Пожалуйста, прекратите маркировку обоими; они * разные *. –

+0

, даже если это возможно, обычно это делается с языками, которые имеют лучшую поддержку для обработки строк. – newtover

ответ

17

Функция выглядит как встроенная функция, учитывающая таблицу; если вы можете включить эту функцию, мы также можем предложить, является ли она эффективной реализацией (not all are).

SELECT t.col, s.Item 
FROM dbo.tablename AS t 
CROSS APPLY dbo.function_name(t.value) AS s; 

Вы также должны не учитывать отдельные значения в виде списков, разделенных запятыми. Таблица базы данных не должна быть контейнером JSON, IMHO.

+0

Это именно то, что я хочу. Благодарю. О хранении списков, разделенных комой в базе данных, полностью согласен, но он унаследован от предыдущих разработчиков :) – nachovall

Смежные вопросы