我该如何用子字符串分隔?

问题描述 投票:0回答:1

我有一个平面文件,其中包含以下数据:我正在尝试将其分离出来;但是,我不知道如何在SUBSTRING函数中找到第一个非整数数字。我正在分析这些数据。

011000015O0110000150122415000000000FEDERAL RESERVE BANK
011001962O1210003742080312122203950CATHAY BANK

到目前为止,我已经将此数字序列的前三个部分分开;但是,我很难找到一种区分银行名称(FEDERAL RESEVE BANK)开头的好方法。这个平面文件中的所有行都有不同的字符长度。

有时,tere是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
sql ssms
1个回答
0
投票

这些字段的长度固定,因此可以使用:

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

您也可以搜索银行名称。名称中包含Os(而不是0)使情况变得相当复杂:

select stuff(field, 1, patindex('%[^0-9O]%', field) - 1, ''), patindex('%[^0-9O]%', field)
© www.soinside.com 2019 - 2024. All rights reserved.