SSMS
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> SSMS

Làm rõ SQL Server ISNUMERIC ()

Bạn nên sử dụng CAST() hoặc TRY_CAST() thay vào đó:

declare @test nvarchar(8) = '12345678'
select cast(@test as bigint) -- errors on failure
select try_cast(@test as bigint) -- returns null on failure

Ngoài ra, điều quan trọng là chỉ ra ISNUMERIC() không hoàn hảo. Từ tài liệu :

ISNUMERIC trả về 1 cho một số ký tự không phải là số, chẳng hạn 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 ($). Để có danh sách đầy đủ các ký hiệu tiền tệ, hãy xem tiền và tiền nhỏ (Transact-SQL).

Vì lý do này, tôi không nghĩ rằng kiểm tra logic có giá trị ở đây. Tốt nhất nên sử dụng TRY_CAST() trên tất cả các giá trị, bất kể sự hiện diện của các ký tự và xử lý phản hồi null theo cách có thể dự đoán được.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Gỡ lỗi trong SQL Management Studio 2012

  2. Làm cách nào để chuyển đổi các giá trị TIMESTAMP thành VARCHAR trong T-SQL như SSMS?

  3. Làm cách nào để giải quyết Bảng 'dbo.Foo' đã tồn tại. lỗi khi bảng không tồn tại?

  4. Tập lệnh cho tất cả các thủ tục được lưu trữ trong Management Studio 2005

  5. Làm cách nào để kết nối với cơ sở dữ liệu cục bộ trong SQL Server Management Studio?