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

Tại sao ISNUMERIC ('.') Trả về 1?

Xem IsNumeric () Bị hỏng? Chỉ đến một điểm.

SELECT CAST('.' AS MONEY) 

trả về 0.00 (mặc dù quá trình truyền không thành công đối với intfloat )

ISNUMERIC chỉ cần kiểm tra xem giá trị có thể được truyền đến bất kỳ một trong các kiểu dữ liệu số hay không, điều này nói chung là vô dụng. Thông thường, bạn muốn biết liệu nó có thể được truyền đến một loại cụ thể hay không.

Ngoài ra, nó thậm chí dường như không thực hiện chính xác tác vụ đó cho tất cả các đầu vào có thể có .. ISNUMERIC(' ') trả về 0 mặc dù truyền thành công cho cả int và money. Ngược lại ISNUMERIC(N'8') trả về 1 nhưng không truyền thành công đến bất kỳ thứ gì tôi đã thử.

Một số hàm trợ giúp hữu ích cho điều đó ở đây IsNumeric, IsInt, IsNumber.

SQL Server 2012 đã giới thiệu TRY_PARSETRY_CONVERT giúp ích rất nhiều cho việc này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng Tìm kiếm Toàn văn trong SQL Server 2008 trên nhiều bảng, cột

  2. SQL Server - xác định cột kiểu XML với mã hóa UTF-8

  3. Tổng hợp chuỗi qua nhiều năm trong SQL Server

  4. Sử dụng SolarWinds Serv-U trên Linux với Cơ sở dữ liệu xác thực máy chủ SQL

  5. Cách thay đổi cột từ Null thành Không Null trong Bảng SQL Server - Hướng dẫn SQL Server / T-SQL Phần 52