I have a long list of six digit numbers (e.g. 123456)

In my postgresql DB I have a table with two columns start\_value and end\_value. The table has rows with start and end values which are 9 digits in length and represent a range of numbers i.e. start\_value might be 123450000 and end\_value might be 123459999.

I need to match each of the six digit numbers with it's row in the DB table which falls in its range.

For many numbers in my list I can simply run the following 

```
SELECT * FROM table WHERE start_value=(number + 000)

```

However, this does not cover numbers which fall inside a range, but do not match this pattern.

I have been trying statements such as:

```
SELECT * FROM table WHERE start_value > (number + 000) AND end_value < (number + 999)

```

But this doesn't work because some rows cover larger ranges than xxxxx0000 to xxxxx9999 and so the statement above may return 20 rows or none.

Any points would be most welcome!

EDIT: the Data Type of the columns are numeric(25)