У меня есть следующая таблица с некоторыми записями.
TABLE :
CREATE TABLE TblPatterns
(
ColPattern VARCHAR(20)
);
INSERT INTO TblPatterns VALUES('123A4567890'),
('123B4567890'),
('123A4567891'),
('123A4567892'),
('243C4567890'),
('123A4567890'),
('123'),
('243'),
('123'),
('24'),
('1');
Мне нужно написать запрос для точного соответствия для данного шаблона.
Данный шаблон похож на 1 к 10 или 11. Что мне нужно сделать, это проверить точное совпадение символа из LEFT.
Пример 1:
DECLARE @Pat int = 10
Ожидаемый результат:
ColPattern
---------------
123A4567890
123A4567891
123A4567892
Пример 2:
DECLARE @Pat int = 3
Ожидаемый результат:
ColPattern
---------------
123A4567890
123B4567890
123A4567891
123A4567892
123
243C4567890
243
Пример 3:
DECLARE @Pat int = 1
Ожидаемый результат:
ColPattern
---------------
123A4567890
123B4567890
123A4567891
123A4567892
243C4567890
123
243
24
1
My Try : 1
DECLARE @Pat int = 10
SELECT DISTINCT ColPattern
FROM TblPatterns
WHERE substring(ColPattern,1,@Pat) IN
(
SELECT substring(ColPattern,1,@Pat)
FROM TblPatterns
GROUP BY substring(ColPattern,1,@Pat)
HAVING COUNT(*) > 1
);
Но получаю неожиданностьрезультат:
ColPattern
------------
123
123A4567890
123A4567891
123A4567892