2015-05-17 1 views
-1

У нас есть таблица с именем DATA, содержащая один столбец типа varchar(). Ниже приводится значение в этой колонке:Как разбить значение столбца на две части базы по их типу в SQL/SSIS

Raj0014 
Dee0052ak 
000Pawan 
Rah454545ul 

Нам нужно отделить INT значение и значение символа, и вставить в другую таблицу с именем DATA1, имеющей два столбца (ID INT, имя VARCHAR (50)).

Результат должен быть:

ID   Name 
0014   Raj 
0052   Deepak 
000   Pawan 
454545  Rahul 

ответ

0

Вы можете написать на месте сценария, как T-SQL для анализа ваших значений и выбрать целые числа из. Обработка их с использованием внешнего скрипта, такого как Perl, может быть проще.

Если у вас уже есть таблица со всеми возможными идентификаторами, вы можете сделать объединение, чтобы удалить их из строковых значений.

1

Если вы не возражаете против этого в SQL, вы можете просто дважды выбрать столбец и использовать загрузку вложенных функций REPLACE, чтобы заменить все числа в одном столбце ничем, и все буквы в другой столбец ни с чем. Это может показаться немного грязным, но это, вероятно, самый быстрый вариант с точки зрения как времени разработки, так и производительности. Как это, но повторять ее для всех алфавитных символов, вам нужно избавиться от:

REPLACE(REPLACE(data, 'a', ''), 'b', '') 

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

REPLACE(REPLACE(data, '0', ''), '1', '') 

Если вам нужно/нужно сделать это внутри SSIS, вы могли бы использовать идею вложенной замены в выражении Derived Column. Помимо этого, компонент сценария будет наиболее очевидной идеей, если вам будет удобно работать на C# или VB.NET или работать с кем-то, кто есть, - тогда вы можете использовать регулярные выражения.

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