从SQL Server中的字符串中提取多个特定长度

时间:2017-10-04 20:40:50

标签: sql sql-server

我有一个像

这样的字符串
ADN120_XK7760069988881LJ 

在我的一个专栏中。我必须提取13位数字的数字。例如,在上面的例子中,我想在SQL Server中提取7760069988881

2 个答案:

答案 0 :(得分:6)

patindex()substring()一起使用(使用模式的变量和replicate()简化重复[0-9] 13次):

create table t (val varchar(128));
insert into t values ('ADN120_XK7760069988881LJ');

declare @pattern varchar(128) = '%'+replicate('[0-9]',13)+'%';

select substring(val,patindex(@pattern,val),13)
from t;

rextester演示:http://rextester.com/MOEVG64754

返回7760069988881

答案 1 :(得分:0)

使用您的查询创建TEMP表

SELECT 'ADN120_XK7760069988881LJ' CODE INTO #TEMP

使用正则表达式的解决方案

SELECT SUBSTRING(CODE,PATINDEX('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%',CODE),13)
FROM #TEMP

无法减少[0-9]使用的次数

希望这有帮助