我想从varchar列中找到第一个整数值

时间:2018-09-19 10:09:57

标签: sql sql-server sql-server-2016 sql-server-2017

我表中有以下数据。

ID
test_SQL_01
test_SQL_02_PQR_01
test_SQL_03_055
test_SQL_04_ABC_99

我想要类似下面的输出。

ID
01
02
03
04

2 个答案:

答案 0 :(得分:3)

如果INTERGER值始终为2位数字,那么您可以:

select substring(ID, patindex('%[0-9]%', ID), 2) as ID
from table t;

答案 1 :(得分:2)

此方法可以处理不同长度的嵌入数字

测试数据:

DECLARE @t table(ID varchar(50))
INSERT @t values
('1'),
('2abc'),
('a3'),
('test_SQL_01'),
('test_SQL_02_PQR_01'),
('test_SQL_03_055'),
('test_SQL_04_ABC_99')

查询:

SELECT 
  STUFF(LEFT(ID, patindex('%[0-9][^0-9]%', ID + 'x')), 1, 
    patindex('%[^0-9][0-9]%', ID), '')
FROM @t

结果:

1
2
3
01
02
03
04