sql >> Databáze >  >> RDS >> Sqlserver

SQL Server 2008 - Fulltextové zaokrouhlování peněžních hodnot?

EDIT:

Důvod, proč toto chování vidíte, je ten, že výchozí lamače slov pro fulltextové vyhledávání SQL jsou definovány v angličtině (lokální prostředí 1033). V angličtině je čárka platným dělením slov, čímž se vaše číslo rozdělí na dvě různá čísla. Pokud však použijete portugalský rozdělovač slov, FTS celkem chytře zachovává čísla pohromadě. Zkuste na svém serveru SQL spustit následující dotaz, abyste viděli, jak fulltextový modul analyzuje stejný vstup odlišně v závislosti na zadaném národním prostředí:

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

AKTUALIZACE:Dobře, podařilo se mi replikovat váš scénář a ano, zdá se, že je to výchozí chování s SQL Server FTS. Zdá se však, že se zaokrouhluje pouze na nejbližší 1/10 čísla (ve vašem případě nejbližších 10 centavos) a NE na nejbližší celé číslo.

Tak například; 12345,88 by bylo vráceno při hledání obě 12345,88 i 12345,9 , zatímco 56789,98 by se objevilo ve vyhledávání 56789,98 stejně jako 56790. Číslo jako 45678,60 však zůstane bez zaokrouhlení nahoru nebo dolů, takže to není tak špatné, jak si myslíte.

Nejste si však jisti, zda existuje něco, co můžete udělat, abyste toto chování změnili. Rychlé vyhledávání na Googlu nic nevrátilo.



  1. sql dotaz s příkazem if

  2. Jak vybrat poslední záznam z tabulky MySQL pomocí syntaxe SQL, pokud je splněna pouze podmínka

  3. Jak FROM_UNIXTIME() funguje v MariaDB

  4. Proč je ladění výkonu SQL nejdůležitější dovedností správy databází