Я действительно борюсь с тем, как вставить else в моем выражении case с другими условиями ... Я не уверен, что это неправильный синтаксис или что? Он не работает, у меня нет ошибок сообщения, проблема в том, что у меня все еще есть Null в моем псевдониме для некоторых случаев ...
UPDATE Table
SET Alias = SUBSTRING(Names, 10, 40);
UPDATE Table
SET Alias = CASE WHEN Alias LIKE 'core.user%' OR Alias LIKE 'core.idea%' OR Alias LIKE'core.form%'
THEN STUFF(Alias, CHARINDEX('.', Alias) + 5, 0, '-')
WHEN Alias LIKE 'core.badge%' OR Alias LIKE 'core.award%' OR Alias LIKE 'core.field%' OR Alias LIKE 'core.audit%' OR Alias LIKE 'core.event%'
THEN STUFF(Alias, CHARINDEX('.', Alias) + 6, 0, '-')
ELSE CASE len(Alias) when charindex('.',Alias) +4 then Alias
ELSE CASE len(Alias)when charindex('.',Alias)+ 5 then Alias
END
END
END;
/*the result for this part is:*/
Names Alias
idealink.core.userbadge core.user-badge
idealink.core.ideacategories core.idea-categories
idealink.core.awardtype core.award-type /*till here it's working,but when*/
idealink.core.user NULL ---I'd like to have (core.user)----
idealink.core.idea NULL ---I'd like to have (core.idea)----
idealink.core.award NULL ---I'd like to have (core.award)----
/*I think the problem is here, I'm having Null*/
Цель всего этого состоит в том, чтобы избавиться от idealink и поставить da sh между словами когда строка слишком длинная после ядра. ; но в некоторых случаях строка не такая длинная, поэтому мне не нужны da sh like (core.user, core.idea, core.award) и т. д., просто избавьтесь от idealink.
Я очень ценю любую помощь, ребята. Спасибо