Essa dúvida apareceu em outro lugar e estou postando aqui a solução.
O problema
Ao fazer um where coluna > 100000
o banco de dados estava retornando todos os valores. Mesmo alterando o tipo da coluna para numérico o resultado era sempre o mesmo.
A gambiarra
Alterar a função para where 1*coluna > 1*100000
para forçar o sistema a compreender o uso de valores numéricos.
Explicação e poréns
Isso funciona porque a maior parte das linguagens de programação trabalha da esquerda para direita, e portanto ao encontrar um “número” seguido de “uma operação numérica” ele vai forçar o outro lado da operação a ser numérico também.
Ao fazer “number * text” a linguagem vai tentar interpretar isso como “number * number”.
Primeiro porém, não vai funcionar sempre, não é elegante e não é eficiente. Isso deve ser usado como último recurso e não como estrategia.
Segundo porém, não funciona ao contrário, tem que colocar o “1” antes do elemento que está dando problemas.
Acho que é isso o resumo da gambiarra.