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

Jiné než číselné znaky, které se vrátí jako kladné při použití ISNUMERIC() na serveru SQL Server

ISNUMERIC() Funkce SQL Server vám umožňuje zkontrolovat, zda je výraz číselný.

Mohou však nastat situace, kdy dosáhnete výsledků, které jste neočekávali. K tomu může dojít, pokud máte výraz, který obsahuje znak, který není číslem, ale je stále přijímán funkcí ISNUMERIC() jako číselné.

Existuje spousta znaků, které ISNUMERIC() přijímá jako číselné, které jste možná nepovažovali za číselné. Patří mezi ně znaky jako plus (+ ), mínus (- ) a různé symboly měn. Také, v závislosti na jeho umístění, písmeno e může také umožnit, aby byl celý výraz interpretován jako číselný.

Příklady

Zde je několik příkladů toho, co mám na mysli:

SELECT 
  ISNUMERIC('+') AS [+],
  ISNUMERIC('-') AS [-],
  ISNUMERIC('$') AS [$],
  ISNUMERIC('1e2') AS [1e2],
  ISNUMERIC('1e+2') AS [1e+2],
  ISNUMERIC('e') AS [e],
  ISNUMERIC('e+') AS [e+];

Výsledek:

+-----+-----+-----+-------+--------+-----+------+
| +   | -   | $   | 1e2   | 1e+2   | e   | e+   |
|-----+-----+-----+-------+--------+-----+------|
| 1   | 1   | 1   | 1     | 1      | 0   | 0    |
+-----+-----+-----+-------+--------+-----+------+

Všimněte si, že e a e+ vrátí záporný výsledek, když jsou sami, ale vrátí kladný výsledek, když jsou obklopeni čísly.

Je to pravděpodobně proto, že samy o sobě nepředstavují číslo, ale když jsou obklopeny čísly, celý výraz by mohl být interpretován jako vědecký zápis (e a e+ se často používají ve vědecké notaci).

Číselné datové typy

Podle dokumentace společnosti Microsoft datové typy, které ISNUMERIC() bude rozpoznáno jako číselné včetně následujícího.

Přesná čísla

  • velký
  • int
  • malý
  • tinyint
  • bit

Pevná přesnost

  • desítkové
  • numerické

Přibližné

  • plovoucí
  • skutečný

Peněžní hodnoty

  • peníze
  • malé peníze

Navíc ISNUMERIC() vrátí 1 pro některé znaky, které nejsou čísly (jak je vidět ve výše uvedeném příkladu). To zahrnuje znaky jako plus (+ ), mínus (- ) a platné symboly měny, jako je znak dolaru ($ ).

Také, jak je vidět v příkladu, písmeno e může ovlivnit výsledek, když je součástí většího výrazu a v závislosti na jeho umístění v tomto výrazu.


  1. Jak generovat skripty pro opětovné vytvoření omezení cizích klíčů v databázi SQL Server - SQL Server / Výukový program TSQL, část 73

  2. Psycopg2 Vložit do tabulky se zástupnými symboly

  3. Nastavení výchozího veřejného profilu pro databázovou poštu (SSMS)

  4. Jak zaokrouhlit průměr na 2 desetinná místa v PostgreSQL?