SQL 服务器中的模式匹配使用正则表达式

Pattern match in SQL Server using regular expressions

我正在尝试在 SQL 服务器 (2019) 列中识别此类模式:

78878001

1-1321-32

1321-12

121-5489-19

403-3-XXXXX

规则是:

我试过这个:

    SELECT * FROM [TABLE1] WHERE [Part no] like  '[0-9]%-%'

但它 returns 一些不正确的值,例如:

  1. 702-3-01960 09150006125

700-3-02474 方舟 4787-PA-51H-99999

如果您至少使用 SQL Server 2012,我想您可以使用 try_parse 来解决这个问题。以您的数据为例:

create table #testing1 (val varchar(100))

INSERT INTO #testing1 
VALUES
('78878001'),
('1-1321-32'),
('1321-12'),
('702-3-01960 09150006125'),
('700-3-02474 Arkds 4787-PA-51H-99999'),
('121-5489-19'),
('403-3-XXXXX')

select * 
from #testing1
where try_parse(replace(replace(val, '-', ''), 'X', '') AS int) is not null