Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Sql Server 2008 - FullText arredondando valores monetários?


EDITAR:

O motivo pelo qual você está vendo esse comportamento é que os separadores de palavras padrão para pesquisa de texto completo SQL são definidos pelo idioma inglês (localidade 1033). Em inglês, uma vírgula é um separador de palavras válido, dividindo seu número em dois números diferentes. No entanto, se você usar o separador de palavras em português, o FTS mantém os números juntos de maneira bastante inteligente. Tente executar a seguinte consulta em seu SQL Server para ver como o mecanismo de texto completo analisa a mesma entrada de maneira diferente, dependendo da localidade especificada:
--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)



ATUALIZAÇÃO:Tudo bem, consegui replicar seu cenário e sim, parece ser o comportamento padrão com o SQL Server FTS. No entanto, parece apenas arredondar para o 1/10 mais próximo do número (os 10 centavos mais próximos no seu caso) e NÃO para o número inteiro mais próximo.

Assim, por exemplo; 12345,88 seria retornado em pesquisas para tanto 12345,88 quanto 12345,9 , enquanto 56789,98 apareceria em pesquisas de 56789,98 e 56790. No entanto, um número como 45678,60 permanecerá intacto sem arredondamento para cima ou para baixo, portanto, não é tão ruim quanto você pensa.

Não tenho certeza se há algo que você possa fazer para alterar esse comportamento. Uma rápida pesquisa no Google não retornou nada.