SQL Server 2008 R2:查找比给定数字长的单元格

SQL Server 2008 R2: Finding cells longer than given number

我有以下 table 和一些记录。

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

我的尝试: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

您必须使用以下逻辑来获取匹配特定长度的模式。

DECLARE @pat INT = 1
SELECT * from TblPatterns WHERE LEN(colPattern) >= @pat;

我也放了SQLFiddle reference