У меня есть поле идентификатора, которое только цифры, но идентификаторы меняются по длине. Если число составляет 16 символов, тогда мне нужно отобразить «x» + последние 4 идентификатора, если нет, то просто отобразите последние 10 идентификаторов.Cognos Substr с различной длиной
0
A
ответ
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
это работало отлично. Большое спасибо! –