我有一列必须处理以获取字符串的一部分。我知道最终需要修复数据库。但是,目前我没有其他选择。
ReceiptText列包含这样的字符串:
帕台农神庙AS 0183 OSLO BAX:604847-71613681 12/11/2018 04:22 AVSTEMMING OVERF:390 01-BankAxept 58 NOK 8513,00 03-VISA 5 NOK 1074,00 04-MASTERCARD 5 NOK 1636,00 14- MAESTRO 1 NOK 79,00 -------------------- INNSAMLET 69总计11302,00 KORTAVTALER上脚安装刀片IKKE UT。
我需要能够检索79,00
。该标准基于发现14-MAESTRO
和INNSAMMLET
。这是我写的:
SELECT SUBSTRING(ReceiptText, CHARINDEX('MAESTRO', ReceiptText), CHARINDEX('INNSAMLET',
ReceiptText) - CHARINDEX('MAESTRO', ReceiptText) + Len('INNSAMLET'))
From DaysTakings
这是结果:
MAESTRO 1 NOK 79,00 -------------------- INNSAMLET
我只需要79
,但我不知道如何进一步缩小范围。
答案 0 :(得分:1)
您需要使用PATINDEX()函数来提取浮点值。尝试使用类似的查询:
SELECT SUBSTRING(
SUBSTRING(ReceiptText, CHARINDEX('MAESTRO', ReceiptText) + LEN('MAESTRO'), CHARINDEX('INNSAMLET',ReceiptText) -
CHARINDEX('MAESTRO', @ReceiptText) - Len('INNSAMLET') - Len('MAESTRO')),
PATINDEX('%[0-9][0-9][,][0-9]%',SUBSTRING(ReceiptText, CHARINDEX('MAESTRO', ReceiptText) + LEN('MAESTRO'),
CHARINDEX('INNSAMLET',ReceiptText) - CHARINDEX('MAESTRO', ReceiptText) - Len('INNSAMLET') - Len('MAESTRO'))),5)
结果
79.00
请注意,这仅在数字格式为[0-9][0-9],[0-9][0-9]
时有效。