2015-10-13 2 views
0

У меня есть поле идентификатора, которое только цифры, но идентификаторы меняются по длине. Если число составляет 16 символов, тогда мне нужно отобразить «x» + последние 4 идентификатора, если нет, то просто отобразите последние 10 идентификаторов.Cognos Substr с различной длиной

ответ

0

Если ваш ID поля уже строка:

CASE character_length([ID]) 
WHEN 16 THEN 'x' || substring([ID],character_length([ID]) - 3) 
ELSE substring([ID],character_length([ID]) - 9) 
END 

Если ваш идентификатор хранится в виде целого числа, я бы рекомендовал создать новый элемент данных, который бросает его как VARCHAR (скажем, с именем «ID строки «):

CAST([ID],VARCHAR(16)) 

Затем подставить новое значение в первом выражении:

CASE character_length([ID String]) 
WHEN 16 THEN 'x' || substring([ID String],character_length([ID String]) - 3) 
ELSE substring([ID String],character_length([ID String]) - 9) 
END 
+0

это работало отлично. Большое спасибо! –