我该如何用Substring分开?

时间:2019-10-01 00:54:36

标签: sql ssms

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

011000015O0110000150122415000000000FEDERAL RESERVE BANK
011001962O1210003742080312122203950CATHAY BANK

到目前为止,我已经分隔了此数字序列的前3个部分;但是,我很难找到一种区分银行名称(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

1 个答案:

答案 0 :(得分:0)

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

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

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

select stuff(field, 1, patindex('%[^0-9O]%', field) - 1, ''), patindex('%[^0-9O]%', field)