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

SQL Server 2008 - FullText afrunding pengeværdier?

EDIT:

Grunden til at du ser denne adfærd er, at standardordbryderne for SQL fuldtekstsøgning er defineret af det engelske sprog (locale 1033). På engelsk er et komma en gyldig ord-breaker, og derved opdeles dit tal i to forskellige tal. Men hvis du bruger den portugisiske ord-breaker, bevarer FTS ganske smart tallene sammen. Prøv at køre følgende forespørgsel på din SQL Server for at se, hvordan fuldtekstmotoren analyserer det samme input forskelligt afhængigt af den angivne lokalitet:

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

OPDATERING:Okay, det er lykkedes mig at replikere dit scenarie, og ja, det ser ud til at være standardadfærd med SQL Server FTS. Det ser dog ud til kun at runde op til nærmeste 1/10 af tallet (de nærmeste 10 centavos i dit tilfælde), og IKKE til det nærmeste hele tal.

Så for eksempel; 12345,88 ville blive returneret i søgninger efter både 12345,88 såvel som 12345,9 , mens 56789,98 ville blive vist i søgninger efter 56789,98 såvel som 56790. Et tal som 45678,60 vil dog forblive intakt uden afrunding op eller ned, så det er ikke så slemt, som du tror.

Ikke sikker på, om der er noget, du kan gøre for at ændre denne adfærd. En hurtig søgning på Google gav intet.



  1. Sådan fungerer UUID_SHORT() i MariaDB

  2. PDO::PARAM for datoer?

  3. Oracle Indsæt via Vælg fra flere tabeller, hvor én tabel muligvis ikke har en række

  4. PostgreSQL Gem og vælg filer ved hjælp af Bytea binære data med C libpq