sql >> Database >  >> RDS >> Sqlserver

Sql Server 2008 - FullText afronding van geldwaarden?

EDIT:

De reden dat u dit gedrag ziet, is dat de standaard woordbrekers voor het zoeken naar volledige tekst in SQL worden gedefinieerd door de Engelse taal (locale 1033). In het Engels is een komma een geldige woordbreker, waardoor uw nummer in twee verschillende cijfers wordt gesplitst. Als je echter de Portugese woordbreker gebruikt, houdt FTS heel slim de cijfers bij elkaar. Probeer de volgende query uit te voeren op uw SQL Server om te zien hoe de fulltext-engine dezelfde invoer anders parseert, afhankelijk van de opgegeven landinstelling:

--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:Oké, ik ben erin geslaagd om uw scenario te repliceren en ja, het lijkt standaardgedrag te zijn met SQL Server FTS. Het lijkt echter alleen naar boven af ​​te ronden op het dichtstbijzijnde 1/10e van het getal (de dichtstbijzijnde 10 centavos in uw geval), en NIET op het dichtstbijzijnde gehele getal.

Dus bijvoorbeeld; 12345,88 zou worden geretourneerd in zoekopdrachten voor zowel 12345,88 als 12345,9 , terwijl 56789,98 zou verschijnen in zoekopdrachten voor 56789,98 en 56790. Een getal zoals 45678,60 blijft echter intact zonder afronding naar boven of beneden, dus het is niet zo erg als u denkt.

Ik weet echter niet zeker of u iets kunt doen om dit gedrag te veranderen. Een snelle zoekopdracht op Google leverde niets op.



  1. ORA-01403:geen gegevens gevonden voor Selecteren in

  2. In welke volgorde worden MySQL JOIN's geëvalueerd?

  3. SqlPlus SP2-0734:Fout

  4. PostgreSQL-schema maken