sql >> Database >  >> RDS >> Sqlserver

Waarom retourneert ISNUMERIC('.') 1?

Zie IsNumeric() Gebroken? Slechts tot op zekere hoogte.

SELECT CAST('.' AS MONEY) 

retourneert 0.00 (hoewel de cast mislukt voor int en float )

ISNUMERIC controleert alleen of de waarde kan worden gecast naar een van de numerieke datatypes, wat over het algemeen nutteloos is. Meestal wil je weten of het naar een bepaald type gecast kan worden.

Bovendien lijkt het die taak niet eens correct uit te voeren voor alle mogelijke invoer. ISNUMERIC(' ') retourneert 0 ondanks succesvol casten naar zowel int als geld. Omgekeerd ISNUMERIC(N'8') retourneert 1 maar cast niet succesvol naar alles wat ik heb geprobeerd.

Enkele handige hulpfuncties daarvoor zijn hier IsNumeric, IsInt, IsNumber.

SQL Server 2012 introduceerde TRY_PARSE en TRY_CONVERT die hierbij enorm helpen.



  1. Rails 3.1 - Pushen naar Heroku - Fouten bij het installeren van de postgres-adapter?

  2. Hoe Arabische karakters in de SQL-database in te voegen?

  3. Is de OraOLEDB-provider in .NET onbetrouwbaar op CLOB-velden?

  4. Gegroepeerde LIMIT in PostgreSQL:toon de eerste N rijen voor elke groep?