sql >> Databáze >  >> Database Tools >> SSMS

SQL Server ISNUMERIC() Vyjasnění

Měli byste použít CAST() nebo TRY_CAST() místo toho:

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

Také je důležité zdůraznit ISNUMERIC() není dokonalý. Z dokumenty :

ISNUMERIC vrátí 1 pro některé znaky, které nejsou čísly, jako je plus (+), mínus (-) a platné symboly měny, jako je znak dolaru ($). Úplný seznam symbolů měn naleznete v části money and smallmoney (Transact-SQL).

Z tohoto důvodu si myslím, že logická kontrola zde nemá cenu. Nejlepší je použít TRY_CAST() na všech hodnotách bez ohledu na přítomnost znaků a zpracovat nulovou odpověď předvídatelným způsobem.



  1. žádný cizí klíč v tabulce, pokud je motor MyISAM

  2. Intellisense nefunguje v SQL Server 2014

  3. Výchozí datum a čas MySQL prostřednictvím phpmyadmin

  4. MySQL vydává západní kódování v souboru PHP UTF-8