Разбить табличное значение на несколько столбцов и создать имя столбца - PullRequest
2 голосов
/ 25 июня 2011

Для базы данных на сервере SQL у меня есть данные для одного столбца, который выглядит следующим образом:

Severity
10006=0;10007=2;10008=5;10009=1;
10006=0;10007=1;10008=6;10009=0;
10006=0;10007=3;10008=5;10009=1;
  • 10006 = Критический
  • 10007 = Major
  • 10008 = Minor
  • 10009 = Trivial

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

critical  Major  Minor   Trivial
--------------------------------
0          2      5        1
0          1      6        0
0          3      5        1

1 Ответ

2 голосов
/ 25 июня 2011

Это работает для данных

with t as (
select '10006=0;10007=2;10008=5;10009=1;' as col union
select '10006=0;10007=1;10008=6;10009=0;' union
select '10006=0;10007=3;10008=5;10009=1;')

select substring(col,patindex('%10006=[0-9];%',col)+6,1) as critical,
       substring(col,patindex('%10007=[0-9];%',col)+6,1) as major,
       substring(col,patindex('%10008=[0-9];%',col)+6,1) as minor,
       substring(col,patindex('%10009=[0-9];%',col)+6,1) as trivial
from t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...