I'm a little lost on your examples, but, to make it simple, if they were to enter only 1 number like 7869987656765, you would want to search on:
7869
987656765
and
7869987656765 ?
So would 7869 be a (possible) product?
To use webmigits example, you can loop through the list of values, and create a new list:
<cfset newStockList = "">
<cfloop list="#Form.StockNumberList#" index = "idx">
<!--- Get the first 4 digits --->
<cfset newStockList = ListAppend(newStockList, Left(idx,4)>
<!--- Get the last 9 digits --->
<cfset newStockList = ListAppend(newStockList, Right(idx,9)>
</cfloop>
Then query using the new list:
SELECT *
FROM Products
WHERE productID IN (#newStockList#)
(You really don't need the ListQualify, unless the productID is a string field, in that case, you could use it to put single quotes around each value:
WHERE productID IN (#ListQualify(newStockList,"'"

#)