2015-08-11 2 views
-6

В моей таблице у меня есть данные.Запятая проблема

roolno 
----------------------------- 
V658, V628 
A001 
A001, V003, V005, Z040 
A001, V003, Z040 
A001, A002 
A001, A002, A003 
A001, A002, A003, A004 
A001, A002, A003, A004, A006 
A001, A002, A003, A004, A006, A013, A015, A047, A100 
A001, A002, A003, A004, A006, NULL, A046 
NULL, B154, '' 
C296, '', ' ', NULL, G652 

Я стараюсь иметь значение в отдельной строке.

Например: это только одна линия я взял для примера

A001, A002, A003, A004, A006, NULL, A046 

должны быть превращены в:

A001, 
A002, 
A003, 
A004, 
A006, 
NULL, 
A046 

Я проверил много сообщений, уже имеющихся на переполнение стека, но это не дает правильный результат для меня.

Пожалуйста, помогите.

+2

Почему вы помечать SQL? Вы хотите использовать запросы для переформатирования ваших данных? Или вы предпочитаете серверные языки программирования? и что вы пробовали? – Raptor

+0

Ваш вопрос непонятен, не могли бы вы его перефразировать? – Haris

+2

Чтобы не хранить данные, такие как значения, разделенные запятыми, - это путь! – jarlh

ответ

0

Вы можете использовать

SELECT 
Split.r.value('.', 'VARCHAR(100)') AS Data 
FROM 
(
SELECT CAST ('<M>' + REPLACE(roolno, ',', '</M><M>') + '</M>' AS XML) AS Data 
FROM table1 
) AS r CROSS APPLY Data.nodes ('/M') AS Split(r); 

или если вы хотите поставить, где положение вы можете поместить его как этот

SELECT 
Split.r.value('.', 'VARCHAR(100)') AS Data 
FROM 
(
SELECT CAST ('<M>' + REPLACE(roolno, ',', '</M><M>') + '</M>' AS XML) AS Data 
FROM table1 where roolno='A001, V003, Z040' 
) AS r CROSS APPLY Data.nodes ('/M') AS Split(r); 
Смежные вопросы