我正在使用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
之间的值的内容答案 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