Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sql Server 2008 - FullText làm tròn giá trị tiền?

CHỈNH SỬA:

Lý do bạn thấy hành vi này là do các bộ ngắt từ mặc định cho tìm kiếm toàn văn bản SQL được xác định bằng ngôn ngữ tiếng Anh (ngôn ngữ 1033). Trong tiếng Anh, dấu phẩy là một phép ngắt từ hợp lệ, do đó chia số của bạn thành hai số khác nhau. Tuy nhiên, nếu sử dụng bộ ngắt chữ tiếng Bồ Đào Nha, FTS khá khéo léo giữ nguyên các con số lại với nhau. Hãy thử chạy truy vấn sau trên SQL Server của bạn để xem công cụ toàn văn phân tích cú pháp cùng một đầu vào khác nhau như thế nào tùy thuộc vào ngôn ngữ được chỉ định:

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

CẬP NHẬT:Được rồi, tôi đã quản lý để sao chép kịch bản của bạn và có, nó dường như là hành vi mặc định với SQL Server FTS. Tuy nhiên, nó dường như chỉ làm tròn đến 1/10 số gần nhất (10 centavos gần nhất trong trường hợp của bạn) và KHÔNG đến số nguyên gần nhất.

Ví dụ; 12345,88 sẽ được trả lại trong các tìm kiếm cho cả 12345,88 cũng như 12345,9 , trong khi 56789,98 sẽ xuất hiện trong các tìm kiếm cho 56789,98 cũng như 56790. Tuy nhiên, một số như 45678,60 sẽ vẫn nguyên vẹn mà không làm tròn lên hoặc xuống, vì vậy nó không tệ như bạn nghĩ.

Tuy nhiên, không chắc liệu bạn có thể làm gì để thay đổi hành vi này hay không. Tìm kiếm nhanh trên Google không trả lại gì.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khóa chính có cần thiết trong SQL Server không?

  2. Chọn các hàng vừa chèn

  3. Làm cách nào để thêm thuộc tính nhận dạng vào cột hiện có trong SQL Server

  4. Bỏ qua hàng khi nhập Excel vào SQL bằng SSIS 2008

  5. Tại sao Datediff giữa GETDATE () và SYSDATETIME () tính bằng mili giây luôn khác nhau?