First, if you still have the option to do so, change the design so you have five columns in stead of the 3 as
ProductId MinPrice1 MaxPrice1 MinPrice2 MaxPrice2
That will make querying much easier.
Second, if you have a price = 20, what do you want to get? 10-20 or 20-30?
What do you want to return if the price is less than 10 or greater than 30?
If you can have many price ranges, you should change the table so it has four columns Product Id, Range Id, MinPrice, MaxPrice.
All that said, querying is a bit messy in the current set up.
@productId INT = 1,
@price INT = 20;
WHEN @Price >= CAST(LEFT(PriceRange1,CHARINDEX('-',PriceRange1+'-')-1) AS INT)
AND @Price < CAST(STUFF(PriceRange1,1,CHARINDEX('-',PriceRange1+'-'),'') AS INT)
WHEN @Price >= CAST(LEFT(PriceRange2,CHARINDEX('-',PriceRange2+'-')-1) AS INT)
AND @Price < CAST(STUFF(PriceRange2,1,CHARINDEX('-',PriceRange2+'-'),'') AS INT)