Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Sql Server 2008 - FullText закръгляващи парични стойности?

РЕДАКТИРАНЕ:

<Игнориране>Причината да виждате това поведение е, че разбивачите на думи по подразбиране за 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)

АКТУАЛИЗАЦИЯ:Добре, успях да копирам вашия сценарий и да, изглежда, че е поведение по подразбиране с SQL Server FTS. Изглежда обаче, че се закръгля само до най-близката 1/10 от числото (най-близките 10 сентаво във вашия случай), а НЕ до най-близкото цяло число.

Така например; 12345,88 ще бъде върнато при търсене на както 12345,88, така и 12345,9 , докато 56789,98 ще се появи при търсения за 56789,98, както и за 56790. Въпреки това число като 45678,60 ще остане непокътнато без закръгляване нагоре или надолу, така че не е толкова лошо, колкото си мислите.

Все пак не съм сигурен дали има нещо, което можете да направите, за да промените това поведение. Бързо търсене в Google не даде нищо.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как работи alter table switch на sql сървър?

  2. Включване на SQL Server в разпределена XA транзакция

  3. Как да вземем последните четири знака от varchar?

  4. Въведение в защитата на ниво ред в SQL Server

  5. SQL Server UNION - Какво е поведението по подразбиране ORDER BY