Maybe use something like
SELECT dtExpires, dtFirst
FROM Customers
WHERE ( cast(fnRemoveNonNumericCharacters(scode) as int) BETWEEN 10 AND 100) OR
(cast(fnRemoveNonNumericCharacters(scode) as int)BETWEEN 500 AND 600)
where the function is :
CREATE Function [fnRemoveNonNumericCharacters](@strText VARCHAR(1000))
RETURNS VARCHAR(1000)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%', @strText) > 0
BEGIN
SET @strText = STUFF(@strText, PATINDEX('%[^0-9]%', @strText), 1, '')
END
RETURN @strText
END
or if you want to exclude those entries where scode is not numeric make also a bool returning function that will tell you if it has non numeric chars and put it in the where clause.
also a way to solve this might be: (inspired a lil bit by Aron
SELECT dtExpires, dtFirst
FROM Customers
WHERE (( case when scode LIKE '%[^0-9]%' then 0 else scode end BETWEEN 10 AND 100) OR
(case when scode LIKE '%[^0-9]%' then 0 else scode end BETWEEN 500 AND 600))
and scode not like '%[^0-9]%'