SQL varchar 字段中 7 位数字的正则表达式

SQL Regex for 7 digit number in varchar field

问题: 'extract' TEXT 列包含以 7 开头的 7 位数字的所有行并且只显示 7 位数字的最佳方法是什么?

SQL 服务器 2017:

CREATE TABLE [TABLE_1] (
TEXT varchar(50) Null,
);

INSERT INTO TABLE_1
(TEXT)
VALUES
('7005011'),
('The Number is 7335022'),
('asd*.-: wqe'),
('/7225033/.123'),
('Nr.: 7115044')
;

SQL Fiddle Link

期望的结果是:

+---------+
| TEXT    |
+---------+
| 7005011 |
| 7335022 |
| 7225033 |
| 7115044 |
+---------+

SQL服务器本身没有正则表达式,你需要使用PATINDEXSUBSTRINGLIKE:

SELECT [TEXT] = SUBSTRING([TEXT], 
  PATINDEX('%7' + REPLICATE('[0-9]', 6) + '%', [TEXT]), 7)
FROM dbo.TABLE_1
WHERE [TEXT] LIKE '%7' + REPLICATE('[0-9]', 6) + '%';

输出:

TEXT
7005011
7335022
7225033
7115044