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.