Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо ISNUMERIC('.') връща 1?

Вижте IsNumeric() счупен? Само до определен момент.

SELECT CAST('.' AS MONEY) 

връща 0.00 (въпреки че прехвърлянето е неуспешно за int и float )

ISNUMERIC просто проверява дали стойността може да бъде прехвърлена към всеки един от числовите типове данни, което обикновено е безполезно. Обикновено искате да знаете дали може да бъде прехвърлен към конкретен тип.

Освен това изглежда дори не изпълнява тази задача правилно за всички възможни входове.. ISNUMERIC(' ') връща 0 въпреки успешното хвърляне както към int, така и към парите. Обратно ISNUMERIC(N'8') връща 1 но не прехвърля успешно към нищо, което опитах.

Някои полезни помощни функции за това са тук IsNumeric, IsInt, IsNumber.

SQL Server 2012 въведе TRY_PARSE и TRY_CONVERT които помагат много за това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разберем типа данни за география на SQL Server

  2. Конфигуриране на доставка на регистрационни файлове на SQL Server

  3. Как да махна колона с ограничение?

  4. SQLException :низови или двоични данни ще бъдат съкратени

  5. Възможни ли са GUID сблъсъци?