我有一个像
这样的字符串ADN120_XK7760069988881LJ
在我的一个专栏中。我必须提取13位数字的数字。例如,在上面的例子中,我想在SQL Server中提取7760069988881
。
答案 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]使用的次数
希望这有帮助