SSMS
 sql >> Baza danych >  >> Database Tools >> SSMS

SQL Server ISNUMERIC() Wyjaśnienie

Powinieneś użyć CAST() lub TRY_CAST() zamiast tego:

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

Należy również zwrócić uwagę na ISNUMERIC() nie jest idealny. Z dokumentacji :

ISNUMERIC zwraca 1 dla niektórych znaków, które nie są liczbami, takich jak plus (+), minus (-) i prawidłowych symboli walut, takich jak znak dolara ($). Aby uzyskać pełną listę symboli walut, zobacz money and smallmoney (Transact-SQL).

Z tego powodu nie sądzę, aby logiczny test miał tutaj wartość. Najlepiej używać TRY_CAST() na wszystkich wartościach, niezależnie od obecności znaków i obsłuż odpowiedź pustą w przewidywalny sposób.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Mac alternatywa dla studia zarządzania serwerem SQL?

  2. Złe szacunki kardynalności pochodzące z planów wykonania SSMS

  3. SQL Server Management Studio rozłączone po okresie bezczynności

  4. Problem „Skrypt XXX jako CREATE To” w programie Microsoft SQL Service Management Studio 2005

  5. PRZYCISK „NOWY WYZWALANIE” programu SQL Server Express JEST WYŁĄCZONY