Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Sql Server 2008 - FullText Rundung von Geldwerten?

BEARBEITEN:

Der Grund für dieses Verhalten ist, dass die standardmäßigen Worttrennungen für die SQL-Volltextsuche von der englischen Sprache (Gebietsschema 1033) definiert werden. Im Englischen ist ein Komma ein gültiger Wörterbrecher, wodurch Ihre Nummer in zwei verschiedene Nummern aufgeteilt wird. Wenn Sie jedoch die portugiesische Worttrennung verwenden, hält FTS die Zahlen ziemlich geschickt zusammen. Versuchen Sie, die folgende Abfrage auf Ihrem SQL Server auszuführen, um zu sehen, wie die Volltext-Engine dieselbe Eingabe je nach angegebenem Gebietsschema unterschiedlich analysiert:

--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:Okay, ich habe es geschafft, Ihr Szenario zu replizieren, und ja, es scheint das Standardverhalten mit SQL Server FTS zu sein. Es scheint jedoch nur auf das nächste 1/10 der Zahl (in Ihrem Fall die nächsten 10 Centavos) und NICHT auf die nächste ganze Zahl aufzurunden.

Also zum Beispiel; 12345,88 würde bei der Suche nach sowohl 12345,88 als auch 12345,9 zurückgegeben , während 56789,98 bei Suchen nach 56789,98 sowie 56790 erscheinen würde. Eine Zahl wie 45678,60 bleibt jedoch unverändert, ohne auf- oder abzurunden, also ist es nicht so schlimm, wie Sie denken.

Ich bin mir jedoch nicht sicher, ob Sie etwas tun können, um dieses Verhalten zu ändern. Eine schnelle Suche bei Google hat nichts ergeben.