РЕДАКТИРОВАТЬ:
<Игнорировать>
Причина такого поведения заключается в том, что средства разбиения по умолчанию для полнотекстового поиска SQL определяются английским языком (языковой стандарт 1033). В английском языке запятая является действительным средством разбиения по словам, тем самым разбивая ваш номер на два разных числа. Однако, если вы используете португальское средство разбиения по словам, FTS довольно умно сохраняет числа вместе. Попробуйте выполнить следующий запрос на SQL Server, чтобы увидеть, как механизм полнотекстового анализа по-разному анализирует один и тот же ввод в зависимости от указанной локали:
--use locale English
select * from sys.dm_fts_parser('"12345,10"',1033,NULL,0)
--use locale Portuguese
select * from sys.dm_fts_parser('"12345,10"',2070,NULL,0)
UPDATE:
Хорошо, мне удалось воспроизвести ваш сценарий, и да, это похоже на поведение по умолчанию с SQL Server FTS. Однако кажется, что он округляется только до ближайшей 1/10 числа (в вашем случае - до 10 сентаво), а НЕ до ближайшего целого числа.
Так, например; 12345,88 будет возвращено при поиске как 12345,88, так и 12345,9 , тогда как 56789,98 будет отображаться при поиске 56789,98 и 56790. Однако, такое число, как 45678 60 останется нетронутой без округления вверх или вниз, так что это не так плохо, как вы думаете.
Не уверен, что есть что-то, что вы можете сделать, чтобы изменить это поведение. Быстрый поиск в Google ничего не дал.