This is a long standing issue, reported back in 2016, actually. It’s still open pending resolution.
As you say, the filter uses an SQL operation to compare the values and does so as a string, rather than a numerical value. Unfortunately, there’s currently no ETA on when it will be resolved.
In the meantime, for you or anyone else that may encounter this, the trick is to format your data as a string as well, such that the comparison works the way you desire it to.
So yes, a string based comparison will place 1, 2 , and 12 in this order [1,12,2]. However if the strings are padded with zeros, it will compare them as you’d expect. So 01,02,12 are properly ordered [01,02,12]
Therefore, to work around this, simply zero pad the field in the data mapper. This can be done via a JavaScript based data extraction like so:
('0000000000' + data.extract('COPIES',0)).slice(-4);
The above applies specifically to a CSV data file with a column name of ‘COPIES’. Just replace the data.extract with an appropriate extract for your data type.
Finally, in your Job Preset, just remember to compare against the padded value: COPIES >= “0005”