基本上,我只需要获取一个5位数的数字,并用空格分隔即可。5位数字可以在varchar中的任何位置。
示例:我在SQL 2008表中有一个varchar列,其中包含这些各种数据
travel visa 34322 LLL001 Coffee 34332 Jakarta FDR001 34312 Taxi cost cash taxi cash 34321 34556 eating dinner with customer eating dinner 34256 with customer visa cost 34221 REF773716637366
5位数字可以在任何空格之间分隔的地方,什么是最好的提取方法呢?
34322 34332 34312 34556 34256 34221
谢谢
这样的行应返回空白
Visa refNbr 778738878
在没有运气的情况下尝试了以下内容
SELECT pjtran.tr_comment ,substring(pjtran.tr_comment,PATINDEX('%[0-9]%',pjtran.tr_comment),5) ,Left(SubString(pjtran.tr_comment, PatIndex('%[0-9.-]%', pjtran.tr_comment), 50),PatIndex('%[^0-9.-]%', SubString(pjtran.tr_comment, PatIndex('%[0-9.-]%', pjtran.tr_comment), 50) + 'X')-1) ,len(pjtran.tr_comment)-len(replace(pjtran.tr_comment,' ',''))
我想我需要结合使用对varchar中的空间数量进行计数。和以上。但我不确定该怎么做
这样的事情怎么样?
select substring(tr_comment, patindex('%[0-9][0-9][0-9][0-9][0-9] %', tr_comment), 5) as zip5
如果要考虑它可能位于字符串的末尾:
select substring(tr_comment, patindex('%[0-9][0-9][0-9][0-9][0-9] %', tr_comment + ' '), 5 ) as zip5