sql >> Databasteknik >  >> RDS >> Sqlserver

Varför returnerar ISNUMERIC('.') 1?

Se IsNumeric() Broken? Bara upp till en viss punkt.

SELECT CAST('.' AS MONEY) 

returnerar 0.00 (även om casten misslyckas för int och float )

ISNUMERIC kontrollerar bara att värdet kan kastas till vilken som helst av de numeriska datatyperna vilket i allmänhet är värdelöst. Vanligtvis vill du veta om den kan gjutas till en specifik typ.

Dessutom verkar det inte ens göra den uppgiften korrekt för alla möjliga indata.. ISNUMERIC(' ') returnerar 0 trots casting framgångsrikt till både int och pengar. Omvänt ISNUMERIC(N'8') returnerar 1 men kastar inte framgångsrikt till något som jag försökte.

Några användbara hjälpfunktioner för det finns här IsNumeric, IsInt, IsNumber.

SQL Server 2012 introducerade TRY_PARSE och TRY_CONVERT som hjälper till mycket med detta.



  1. Hur man genererar skript för att återskapa främmande nyckelbegränsningar i SQL Server Database - SQL Server / TSQL Tutorial Del 73

  2. ScaleGrid DigitalOcean-stöd för MySQL, PostgreSQL och Redis™ nu tillgängligt

  3. Vad är skillnaden mellan =null och IS NULL?

  4. "visa skapa tabell" motsvarighet i oracle sql