sql >> Databáze >  >> RDS >> Sqlserver

Kontrola číselného ověření

Váš výraz je platný, mám podezření, že dostáváte hodnotu, kterou funkce považuje za číselnou, ale nelze ji převést na celé číslo. Zkuste následující...

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

Příkaz convert vybuchne s chybou, kterou hlásíte...

Podívejte se na tuto otázku:T-sql – zjistěte, zda hodnota je celé číslo

Několik dalších příkladů "Numerických" hodnot, které nelze převést na celé číslo

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

Přidejte výběr convert(int,myField) v begin/end abyste viděli skutečnou hodnotu pole způsobující chybu



  1. provádění operací souvisejících s datem v PHP

  2. Hledání hodnot NULL pro různé typy Oracle

  3. PostgreSQL/výkon jeden obecný kurzor nebo vytvořit pro každý dotaz

  4. Získání posledního ID vložení pro mysql po vložení