在我的查询中,我有数百条来自 iSeries 消息队列的字符串记录,如下所示:
006 1 AccountSetBalance 0000000000 EQ 2016-03-01-18.45.42.002000 0038882665 _ 123456 12345612345678 17017362 0 0
我需要在我的结果中显示帐号部分12345678
和余额部分17017362
我努力了:
SELECT MQ_Message
, SUBSTRING(MQ_Message,92,30) -- = 12345678 17017362 0
, SUBSTRING(MQ_Message,92,8) -- = 12345678 , SUBSTRING(MQ_Message,100, CHarIndex(' ', SUBSTRING('006 1 AccountSetBalance 0000000000 EQ 2016-03-01-18.45.42.002000 0038882665 _ 123456 12345612345678 17017362 0 0',92,20)) )
, CHarIndex(' ', SUBSTRING('006 1 AccountSetBalance 0000000000 EQ 2016-03-01-18.45.42.002000 0038882665 _ 123456 12345612345678 17017362 0 0',99,20))
, CHARINDEX(' ','17017362 0 0')
from outboundMessages WHERE message_Type = '006'
我可以很容易地获得帐户,因为字符串的长度是固定的,直到余额,但是我需要拆分返回的字符串SUBSTRING(MQ_Message,92,30)
并从中取出余额部分,这部分在0和99999917017362
之间可能会有所不同(在便士!)
在尝试了使用 CHARINDEX 的所有可能组合后,我真的很难保持平衡。
做这个的最好方式是什么?