• You can pad the string values for proper sorting using the REPLICATE operator.

    For example:

    DECLARE @val VARCHAR(10)

    SET @val = '2609'

    DECLARE @t TABLE

    (

    [Start] VARCHAR(10)

    ,[End] VARCHAR(10)

    )

    INSERT @t

    VALUES

    ('1500','1599')

    , ('2400','2799')

    , ('1','599')

    , ('2800','2999')

    , ('700','799')

    , ('A1','A3')

    , ('B4','B9')

    SELECT

    Start

    ,[End]

    FROM

    @t

    WHERE

    @val BETWEEN [Start] AND [End]

    Your output:

    StartEnd

    24002799

    1599

    SELECT

    r.[Start]

    ,r.[End]

    FROM

    (

    SELECT

    [Start]+REPLICATE('0',6-LEN([Start])) AS [Start]

    ,[End]+REPLICATE('0',6-LEN([End])) AS [End]

    FROM

    @t

    ) r

    WHERE

    @val BETWEEN [Start] AND [End]

    Output padded right:

    StartEnd

    240000279900

    100000599000

    SET @val = '002609'

    SELECT

    r.[Start]

    ,r.[End]

    FROM

    (

    SELECT

    REPLICATE('0',6-LEN([Start]))+[Start] AS [Start]

    ,REPLICATE('0',6-LEN([End]))+[End] AS [End]

    FROM

    @t

    ) r

    WHERE

    @val BETWEEN [Start] AND [End]

    Output padded left:

    StartEnd

    002400002799