Я пытался заменить значения в столбце возвращаемых данных из запроса SQL.
После долгого поиска в Google я попытался использовать REPLACE и CASE, но безуспешно, поэтому я немного помог с ним.
Столбец, которым я хочу манипулировать, это ParentMsgClassID. Поэтому в небольшом простом псевдокоде я хочу, чтобы произошло следующее:
IF ParentMsgClassID = 1000 VALUE = Audit
IF ParentMsgClassID = 2000 VALUE = Security
IF ParentMsgClassID = 3000 VALUE = Operations
Мой оператор Select выглядит следующим образом.
select
/*MsgSourceType Columns*/
ST.MsgSourceTypeID,
ST.[Name] AS MsgSourceTypeName,
/*MPERuleToMsgSourceType Columns*/
MRMST.MPERuleRegexID,
/*MPERule Columns*/
MPER.MPERuleID,
MPER.CommonEventID,
MPER.FullName AS MPERuleFullName,
MPER.BaseRule,
/*Common Event Columns*/
CE.MsgClassID,
CE.[Name] AS commonEventName,
/*MsgClass Columns*/
MC.ParentMsgClassID,
MC.[Name] AS MsgClassName,
MC.FullName AS MsgClassFullName,
MC.ShortDesc AS MsgShortDesc
from MsgSourceType AS ST
inner join MPERuleToMsgSourceType AS MRMST on ST.MsgSourceTypeID = MRMST.MsgSourceTypeID
inner join MPERule AS MPER on MPER.MPERuleRegexID = MRMST.MPERuleRegexID
inner join CommonEvent AS CE on MPER.CommonEventID = CE.CommonEventID
inner join MsgClass as MC on CE.MsgClassID = MC.MsgClassID
where ST.[Name] like 'syslog - Palo Alto Firewall';
Любая помощь будет в значительной степени получена, также я 'Я не администратор баз данных, поэтому все вышеперечисленное просто объединено и может быть неоптимальным.
Согласно комментарию ниже, я пытался использовать CASE, но это не сработало. Я включил запрос для справки.
select
/*MsgSourceType Columns*/
ST.MsgSourceTypeID,
ST.[Name] AS MsgSourceTypeName,
/*MPERuleToMsgSourceType Columns*/
MRMST.MPERuleRegexID,
/*MPERule Columns*/
MPER.MPERuleID,
MPER.CommonEventID,
MPER.FullName AS MPERuleFullName,
MPER.BaseRule,
/*Common Event Columns*/
CE.MsgClassID,
CE.[Name] AS commonEventName,
/*MsgClass Columns*/
MC.ParentMsgClassID,
MC.[Name] AS MsgClassName,
MC.FullName AS MsgClassFullName,
MC.ShortDesc AS MsgShortDesc,
CASE MC.ParentMsgClassID
WHEN 1000 THEN 'Audit'
WHEN 2000 THEN 'Security'
WHEN 3000 THEN 'Operations'
END AS ParentMsgClassText
from MsgSourceType AS ST
inner join MPERuleToMsgSourceType AS MRMST on ST.MsgSourceTypeID = MRMST.MsgSourceTypeID
inner join MPERule AS MPER on MPER.MPERuleRegexID = MRMST.MPERuleRegexID
inner join CommonEvent AS CE on MPER.CommonEventID = CE.CommonEventID
inner join MsgClass as MC on CE.MsgClassID = MC.MsgClassID
where ST.[Name] like 'syslog - Palo Alto Firewall';