Try this:
DECLARE @numberToFind INT = 4;
;WITH CTE
AS
(
SELECT
arange,
SUBSTRING(arange, 1, CHARINDEX('-', arange,1) - 1) "From",
SUBSTRING(arange,
CHARINDEX('-', arange,1) + 1,
LEN(arange) - CHARINDEX('-', arange,1) + 1) "To"
FROM @ranges
)
SELECT arange
FROM CTE
WHERE @numberToFind BETWEEN "From" AND "To";
If these ranges are stored as a single varchar string, then you have to parse these comma separated ranges first like so:
DECLARE @ranges VARCHAR(100) = ('2-5,10-12,67-89');
declare @numberToFind INT = 4;
DECLARE @Xml xml = CONVERT(xml,
'<root><s>' +
REPLACE(@ranges, ',', '</s><s>') +
'</s></root>');
;WITH ParsedRanges
AS
(
SELECT arange = T.c.value('.','varchar(20)')
FROM @Xml.nodes('/root/s') T(c)
), CTE
AS
(
SELECT
arange,
SUBSTRING(arange, 1, CHARINDEX('-', arange,1) - 1) "From",
SUBSTRING(arange,
CHARINDEX('-', arange,1) + 1,
LEN(arange) - CHARINDEX('-', arange,1) + 1) "To"
FROM ParsedRanges
)
SELECT arange
FROM CTE
WHERE @numberToFind BETWEEN "From" AND "To";
2-5or it has two columns from and to where the values are 2 and 5 respectively