以字符串形式返回Word - SQL

时间:2018-04-05 11:55:25

标签: sql sql-server substring charindex

我正在使用SQL Server,如何从SQL中的以下字符串返回帐号?以下是1列和1个NVarchar()

字符串
  

银行名称:eewweew Chemnitz银行帐号地址:wewewewewew   茨维考12345 dfdfdfdfd fdfdfdfdf。 1-3受益人姓名:Roswitha   Haupt-Elster帐号: TheValueToReturn SWIFT / BIC代码:   VVHHH SortCode:sfsffsfsa IBAN:wdffwfafsafsafs

因此,只从上面的字符串返回 TheValueToReturn

将返回数字: SWIFT

之间的值的内容

3 个答案:

答案 0 :(得分:4)

SQL Server并不是最好的事情,我个人会在表示层中这样做。

然而,这适用于我们的示例,但是,您可能想要进行更多测试。它还假设每一行都有一个帐号(前缀为'Account Number:'),并且在该值之后有更多数据:

CREATE TABLE #Sample (JunkText nvarchar(4000));

INSERT INTO #Sample
VALUES('Name: eewweew Chemnitz Bank Account Address: weweweewew Zwickau 12345 dfdfdfdfd fdfdfdfdf. 1-3 Beneficiary Name: Roswitha Haupt-Elster Account Number: TheValueToReturn SWIFT/BIC Code: VVHHH SortCode: sfsffsfsa IBAN: wdffwfafsafsafs')
GO
SELECT *, SUBSTRING(JunkText, PI1.AN + LEN('Account Number: '), CI1.AN - (PI1.AN -2)) As AccountNumber
FROM #Sample
     CROSS APPLY (VALUES(PATINDEX('%Account Number:%',JunkText))) PI1(AN)
     CROSS APPLY (VALUES(CHARINDEX(' ',JunkText, PI1.AN + LEN('Account Number: ')))) CI1(AN)

GO

DROP TABLE #Sample;

答案 1 :(得分:3)

这可能会对您有所帮助:

DECLARE @String VARCHAR(MAX)

SET @String = 'Bank Name: eewweew Chemnitz Bank Account Address: weweweewew Zwickau 12345 dfdfdfdfd fdfdfdfdf. 1-3 Beneficiary Name: Roswitha Haupt-Elster Account Number: TheValueToReturn SWIFT/BIC Code: VVHHH SortCode: sfsffsfsa IBAN: wdffwfafsafsafs'

SELECT REPLACE(SUBSTRING(LEFT(@String, CHARINDEX('SWIFT', @String) - 1), CHARINDEX('Number:', LEFT(@String, CHARINDEX('SWIFT', @String) - 1)), LEN(LEFT(@String, CHARINDEX('SWIFT', @String) - 1))), 'Number: ', '') 

答案 2 :(得分:1)

ViewGroup