一尘不染

如何在varchar中找到5位数字?

sql

基本上,我只需要获取一个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中的空间数量进行计数。和以上。但我不确定该怎么做


阅读 147

收藏
2021-05-05

共1个答案

一尘不染

这样的事情怎么样?

 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
2021-05-05