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

Các ký tự không phải số trả về số dương khi sử dụng ISNUMERIC () trong SQL Server

ISNUMERIC() trong SQL Server cho phép bạn kiểm tra xem một biểu thức có phải là số hay không.

Tuy nhiên, có thể có những lúc bạn nhận được kết quả mà bạn không ngờ tới. Điều này có thể xảy ra nếu bạn có một biểu thức chứa ký tự không phải là số nhưng vẫn được ISNUMERIC() chấp nhận dưới dạng số.

Có một loạt các ký tự ISNUMERIC() chấp nhận ở dạng số mà bạn có thể không nghĩ là số. Chúng bao gồm các ký tự như dấu cộng (+ ), dấu trừ (- ), và các ký hiệu tiền tệ khác nhau. Ngoài ra, tùy thuộc vào vị trí của nó, chữ cái e cũng có thể cho phép toàn bộ biểu thức được hiểu là số.

Ví dụ

Dưới đây là một số ví dụ về ý tôi:

SELECT 
  ISNUMERIC('+') AS [+],
  ISNUMERIC('-') AS [-],
  ISNUMERIC('$') AS [$],
  ISNUMERIC('1e2') AS [1e2],
  ISNUMERIC('1e+2') AS [1e+2],
  ISNUMERIC('e') AS [e],
  ISNUMERIC('e+') AS [e+];

Kết quả:

+-----+-----+-----+-------+--------+-----+------+
| +   | -   | $   | 1e2   | 1e+2   | e   | e+   |
|-----+-----+-----+-------+--------+-----+------|
| 1   | 1   | 1   | 1     | 1      | 0   | 0    |
+-----+-----+-----+-------+--------+-----+------+

Lưu ý rằng ee+ trả về kết quả âm khi chúng tự nhận, nhưng trả về kết quả dương khi được bao quanh bởi các con số.

Điều này có thể là do, về bản chất, chúng không đại diện cho một số, nhưng khi được bao quanh bởi các số, toàn bộ biểu thức có thể được hiểu là ký hiệu khoa học (ee+ thường được sử dụng trong ký hiệu khoa học).

Kiểu dữ liệu số

Theo tài liệu của Microsoft, các kiểu dữ liệu ISNUMERIC() sẽ nhận dạng là số bao gồm những điều sau đây.

Số chính xác

  • bigint
  • int
  • smallint
  • tinyint
  • bit

Độ chính xác cố định

  • thập phân
  • số

Gần đúng

  • float
  • thực

Giá trị tiền tệ

  • tiền
  • tiền nhỏ

Ngoài ra, ISNUMERIC() trả về 1 cho một số ký tự không phải là số (như trong ví dụ trên). Điều này bao gồm các ký tự như dấu cộng (+ ), dấu trừ (- ) và các ký hiệu tiền tệ hợp lệ như ký hiệu đô la ($ ).

Ngoài ra, như đã thấy trong ví dụ, chữ cái e có thể ảnh hưởng đến kết quả khi một phần của biểu thức lớn hơn và tùy thuộc vào vị trí của nó trong biểu thức đó.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Việc sử dụng GO trong SQL Server Management Studio &Transact SQL là gì?

  2. Cách trả về danh sách các kiểu dữ liệu trong SQL Server (T-SQL)

  3. Danh sách các định dạng ngày có sẵn với CONVERT () trong SQL Server

  4. cách gán giá trị cte cho biến

  5. Cài đặt cụm chuyển đổi dự phòng SQL Server -3