34,838
社区成员




declare @str varchar(1000) = '11111张三 22.22客户转账'
declare @bin varbinary(1000) = convert(varbinary(1000), @str)
select convert(varchar, substring(@bin,1,5)) -- 5位帐号
select convert(varchar, substring(@bin,6,10)) -- 10位姓名
select convert(varchar, substring(@bin,16,5)) -- 5位金额
select convert(varchar, substring(@bin,21,10))-- 10位备注信息
00183000000000038 201209071122106223190210589245 王二 1177527.27 01xnhc
00183S69900000049 201209071347406223190210589285 Ecode =S099 | Emsg = 卡号:6223190210589247,卡档记录不存在 01xnhc
DECLARE @s VARCHAR(30)
SET @s='11111张三 22.22客户转账'
--1
SELECT SUBSTRING(SUBSTRING(@s,PATINDEX('%[^0-9][0-9]%',@s),15),0,PATINDEX('%[^0-9][吖-做]%',SUBSTRING(@s,PATINDEX('%[^0-9][0-9]%',@s),15)))
--3 备注
SELECT REVERSE(SUBSTRING(REVERSE(@s),0,PATINDEX('%[0-9]%',REVERSE(@s))))
DECLARE @s VARCHAR(30)
SET @s='11111张三 22.22客户转账'
SELECT SUBSTRING(@s,6,PATINDEX('%[^0-9][0-9]%',@s)-5) --姓名
SELECT SUBSTRING(@s,PATINDEX('%[^0-9][0-9]%',@s),6) --金额
SELECT SUBSTRING(@s,PATINDEX('%[^0-9][0-9]%',@s)+6,10) --备注