Вы захотите найти любую строку, в которой существует какой-либо шаблон, а затем применить соответствующий ограниченный SQL «регулярное выражение» в зависимости от того, какой шаблон соответствует.HH:MM
один является более ограничивающим, чем H:MM
, поэтому мы используем его для проверки.
CREATE TABLE #infraction (
Comment VARCHAR(100)
)
INSERT INTO #infraction VALUES ('time of 12:35 incident')
INSERT INTO #infraction VALUES ('time of 1:34 incident');
DECLARE @reg NVARCHAR(100) = '[0-9]:[0-5][0-9]'
DECLARE @reg2 NVARCHAR(100) = '[0-1][0-2]:[0-5][0-9]'
SELECT
Comment,
IIF(PATINDEX('%' + @reg2 + '%', Comment) = 0,
SUBSTRING(Comment, PATINDEX('%' + @reg + '%', Comment), 4),
SUBSTRING(Comment, PATINDEX('%' + @reg2 + '%', Comment), 5)
)
FROM
#infraction
WHERE
Comment LIKE '%' + @reg + '%'
or
Comment LIKE '%' + @reg2 + '%';
Возвращает:
12:35
1:34
SQL Fiddle