Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Sql Server 2008 - FullText arrondissant les valeurs monétaires ?

MODIFIER :

La raison pour laquelle vous voyez ce comportement est que les séparateurs de mots par défaut pour la recherche en texte intégral SQL sont définis par la langue anglaise (paramètres régionaux 1033). En anglais, une virgule est un séparateur de mots valide, divisant ainsi votre nombre en deux nombres différents. Cependant, si vous utilisez le mot-casseur portugais, FTS conserve assez intelligemment les chiffres ensemble. Essayez d'exécuter la requête suivante sur votre serveur SQL pour voir comment le moteur de texte intégral analyse différemment la même entrée en fonction des paramètres régionaux spécifiés :

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

MISE À JOUR :D'accord, j'ai réussi à répliquer votre scénario et oui, cela semble être le comportement par défaut avec SQL Server FTS. Cependant, il semble seulement arrondir au 1/10e le plus proche du nombre (les 10 centavos les plus proches dans votre cas), et NON au nombre entier le plus proche.

Ainsi par exemple; 12345,88 serait renvoyé dans les recherches de à la fois 12345,88 et 12345,9 , tandis que 56789,98 apparaîtraient dans les recherches de 56789,98 ainsi que 56790. Cependant, un nombre tel que 45678,60 restera intact sans arrondi vers le haut ou vers le bas, donc ce n'est pas aussi mauvais que vous le pensez.

Je ne sais pas si vous pouvez faire quelque chose pour changer ce comportement. Une recherche rapide sur Google n'a rien donné.