Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Sql Server 2008 - FullText che arrotonda i valori monetari?

EDIT:

Il motivo per cui viene visualizzato questo comportamento è che i wordbreaker predefiniti per la ricerca fulltext SQL sono definiti dalla lingua inglese (locale 1033). In inglese, una virgola è un word breaker valido, suddividendo così il tuo numero in due numeri diversi. Tuttavia, se usi il wordbreaker portoghese, FTS mantiene insieme i numeri in modo abbastanza intelligente. Prova a eseguire la query seguente sul tuo SQL Server per vedere come il motore di testo completo analizza lo stesso input in modo diverso a seconda della locale specificata:

--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)

AGGIORNAMENTO:va bene, sono riuscito a replicare il tuo scenario e sì, sembra essere un comportamento predefinito con SQL Server FTS. Tuttavia, sembra solo arrotondare per eccesso al decimo del numero più vicino (i 10 centavos più vicini nel tuo caso) e NON al numero intero più vicino.

Quindi per esempio; 12345,88 verrebbe restituito nelle ricerche di sia 12345,88 che 12345,9 , mentre 56789,98 apparirà nelle ricerche di 56789,98 e 56790. Tuttavia, un numero come 45678,60 rimarrà intatto senza arrotondamenti per eccesso o per difetto, quindi non è così male come pensi.

Tuttavia, non sono sicuro se c'è qualcosa che puoi fare per cambiare questo comportamento. Una rapida ricerca su Google non ha restituito nulla.