Как добиться функциональности TRY_CONVERT в SSIS? - PullRequest
3 голосов
/ 02 апреля 2019

В пакете служб SSIS у меня есть производный столбец, в котором я хочу отформатировать телефон, как показано ниже:

CASE
    WHEN TRY_CONVERT(BIGINT, phone) IS NULL THEN
        NULL
    ELSE
        phone
END

Как использовать выражение SSIS для достижения того же результата, что и выше?

1 Ответ

1 голос
/ 02 апреля 2019

Производная колонка

Вы должны использовать следующее выражение:

(DT_I8)[Phone] == (DT_I8)[Phone] ? [Phone] : NULL(DT_WSTR,50)

Обратите внимание, что вы должны заменить (DT_WSTR,50) типом данных столбца [Phone]. Нажмите здесь для получения дополнительной информации

А в выводе ошибки производного столбца измените параметр on error на Ignore Failure

enter image description here

Компонент скрипта

Вы также можете добиться этого, используя компонент скрипта:

  1. Добавление компонента сценария в задачу потока данных
  2. Выберите [Телефон] в качестве столбца ввода
  3. Создайте новый столбец вывода того же типа, что и в примере [Phone] [outPhone]
  4. Используйте аналогичный код

    if(!Row.Phone_IsNull && !String.IsNullOrEmpty(Row.Phone) && Int64.TryParse(Row.Phone, out long number)){
    
        Row.OutPhone = Row.Phone;
    
    }else{
    
        Row.OutPhone_IsNull = true;
    
    }
    
...