Как бы я отделить это с подстрокой? - PullRequest
0 голосов
/ 01 октября 2019

У меня есть плоский файл, который содержит такие данные: я пытаюсь выделить их;однако, я не знаю, как найти первое не int число в функции SUBSTRING. Я профилирую эти данные.

011000015O0110000150122415000000000FEDERAL RESERVE BANK
011001962O1210003742080312122203950CATHAY BANK

До сих пор я отделил первые 3 части этой числовой последовательности;Тем не менее, я не могу найти хороший способ отделить начало названия банка (ФЕДЕРАЛЬНЫЙ РЕЗЕРВНЫЙ БАНК). Все строки в этом плоском файле имеют разную длину символов.

Иногда есть 9 нулей, 10 нулей и вообще нет повторяющихся нулей. Для профилирования этих данных мне не нужны эти нули или последующие числа.

SELECT 
    SUBSTRING(FIELD1, 0,10) ROUTING_NUMBER,
    SUBSTRING(FIELD1,11,9) FEDRESERVE_NUM,
    SUBSTRING(FIELD1,20,7) NO_IDEA_YET,
    SUBSTRING(FIELD1,
FROM srcFlatFile.dbo.fedachdir2018

Это то, что мне нужно («O» не нужен свой собственный столбец и «000000000» и«122203950» сейчас не нужны):

011000015 O 011000015 0122415 000000000 FEDERAL RESERVE BANK
011001962 O 121000374 2080312 122203950 CATHAY BANK

1 Ответ

0 голосов
/ 01 октября 2019

Поля имеют фиксированную длину, поэтому вы можете использовать:

select stuff(field, 1, 35, '')

Вы также можете искать название банка. Это усложняется наличием Os в имени (в отличие от 0):

select stuff(field, 1, patindex('%[^0-9O]%', field) - 1, ''), patindex('%[^0-9O]%', field)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...