2013-10-02 2 views
2

В настоящее время я обновляю уже существующий пакет SSIS. Текущий Пакет извлекает данные из листа распространения Excel, который предоставляется нашим ИТ-отделом. В нем перечисляются имена компьютеров компьютеров и рассчитывается для отчета о лицензии.Удалить текст из строки в пакете SSIS

В настоящее время у меня есть Job (производный столбец) от M (Mobile) или D (Рабочий стол) от первой части имени машины, так что он возвращает только имя пользователя, которое является тем, что мне нужно для отчета ,

MBRUBAKERBR => BRUBAKERBR 

Однако наш ИТ-отдел только что реализовал Windows 7, а вместе с ним и новое соглашение об именах. Теперь есть 76A, B, C или D, который добавляется к концу всех обновленных машин. Если машина не обновлена, она остается в старой Конвенции об именах (см. Выше).

Есть также машины, которые должны оставаться на XP, их имена были обновлены, чтобы иметь X3A, B, C или D в конце их.

MBRUBAKERBR76A or DBRUBAKERX3C 

Что мне нужно, это удалить последнюю часть имени, чтобы я просто получил имя пользователя из отчета.

Проблема заключается в том, что я не могу использовать выражение LEFT, RIGHT, LTRIM или RTRIM, так как некоторые имена компьютеров будут иметь только M или D спереди (так как они еще не обновлены).

Что я могу сделать, чтобы удалить эти символы, не перестраивая этот пакет?

UPDATE: Я бы очень хотел обновить существующее выражение, которое удалило M и D. Вот выражение, которое я использую.

SUBSTRING(Name,2,50) 

Это в производной колонке в моем пакете SSIS.

Что касается выборки данных здесь является то, что он выглядит как поступать.

|  Name  | 
| MBrubakerBR76A | 
| MBROCKSKX3A | 
| DGOLDBERGZA | 
| MWILLIAMSEL | 
| DEASTST76C  | 
| DCUSICKEVX3D | 

Это то, что я хочу, чтобы вернуться.

|  Name  | 
| BRUBAKERBR  | 
| BROCKSK  | 
| GOLDBERGZA  | 
| WILLIAMSEL  | 
| EASTST   | 
| CUSICKEV  | 

Сообщите мне, если вам нужна дополнительная информация или примеры.

+1

Что делать, если 'MORGANAB' приходит? Это мобильное устройство Baile Organa или настольный компьютер Windows 7 от Alice Morgan? – billinkc

+0

Это было бы похоже на этот MMORGANAB, когда он вошел. Затем я снимаю первую букву (M или D). Если у нас есть более 1 MORGANAB, мы обычно добавляем дополнительный символ к именам, MORGANABI или MORGANABE и т. Д. –

+0

Показать данные образца и ожидаемые результаты – Justin

ответ

1

Сначала определите, была ли модернизирована машина, если она затем вырезает последние 3 и первую букву. Если он не был обновлен, просто разделите первую букву. Я избегал функций Trim, чтобы код был чистым.

SELECT 
machineName, 

CASE WHEN RIGHT(machineName, 3) Like '%[0-9]%' THEN 
    SUBSTRING(machineName, 2, len(machineName) - 4) 
ELSE 
    RIGHT(machineName, len(machineName)-1) 
END AS UserName 

From MachineList 

SQL Fiddle Example

SSIS Expression
Как шаблону не работает в выражении SSIS, попробуйте это

LEFT(RIGHT(machineName, 3),2)="X3"||LEFT(RIGHT(machineName, 3),2)="76"?SUBSTRING(machineName, 2, len(machineName) - 4):RIGHT(machineName, len(machineName)-1) 
+0

SQL Fiddle - это потрясающе !!! Благодарю вас за то, что вы подключили меня к этому виду. Я немного новичок в этом, и сайт станет для меня бесценным ресурсом. Еще раз спасибо. –

+1

Мне нравится скрипт SQL. Я также узнал об этом сайте из StackOverflow. Есть много облачных IDE, таких как pythonfiddle, jsfiddle. Также помог ли мой ответ? Вы ищете что-то подобное? –

+0

То, что у вас есть, это почти то, что я ищу, но мне нужно сделать это в выражении в пакете SSIS. Пакет уже построен и работает, поэтому я не хочу срывать пакет, чтобы заставить эту модификацию работать. Я играю с идеей сначала вытащить данные в промежуточную таблицу, используя ваш скрипт, чтобы преобразовать его с помощью задачи SQL, а затем просто подключить мой существующий пакет к промежуточной таблице для преобразования поиска вместо таблицы Excel, как это В настоящее время. Что ты думаешь? –

Смежные вопросы