Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Sprawdzanie poprawności numerycznej

Twoje wyrażenie jest prawidłowe, podejrzewam, że otrzymujesz wartość, która jest uważana przez funkcję za liczbową, ale nie można jej przekonwertować na liczbę całkowitą. Wypróbuj następujące...

declare @myfield varchar(20)
set @myfield='.'
if ISNUMERIC(@myfield)=1
begin
    select CONVERT(int,@myField)
end

Wyciąg convert zostanie wysadzony wraz z błędem, który zgłaszasz...

Sprawdź to pytanie:T-sql - określ, czy wartość jest liczbą całkowitą

Więcej przykładów wartości „liczbowych”, których nie można przekonwertować na liczbę całkowitą

select '1.e0',ISNUMERIC('1.e0') as IsNum  
union
select '.',ISNUMERIC('.') as IsNum  
union
select '12.31',ISNUMERIC('12.31') as IsNum  

Dodaj wybrane convert(int,myField) w begin/end aby zobaczyć rzeczywistą wartość pola powodującą wystąpienie błędu



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ustaw limit wierszy tabeli w SQL

  2. Wstaw tablicę Bytes INTO varbinary(max) record

  3. Wczytaj wiele tabel z relacjami z t-sql do DataSet

  4. Jak wyodrębnić listę wartości do wierszy z XML za pomocą XQuery?

  5. Utwórz tabelę tymczasową w SQL Server