W SQL Server możesz użyć ISNUMERIC()
funkcja, aby dowiedzieć się, czy wyrażenie jest numeryczne, czy nie.
Funkcja zwraca 1, jeśli wyrażenie jest liczbowe, i 0, jeśli nie jest.
Aby użyć tej funkcji, po prostu przekaż wartość/wyrażenie do funkcji podczas jej wywoływania.
Przykład 1 – Wyrażenie numeryczne
Oto przykład pokazujący, co się dzieje, gdy przekazujesz wyrażenie numeryczne do tej funkcji.
SELECT ISNUMERIC(250) AS Result;
Wynik:
+----------+ | Result | |----------| | 1 | +----------+
W tym przypadku wartość jest liczbowa, a wynik to 1.
Otrzymujemy ten sam wynik, nawet jeśli wartość jest podana jako ciąg znaków (ujęty w pojedyncze cudzysłowy).
SELECT ISNUMERIC('250') AS Result;
Wynik:
+----------+ | Result | |----------| | 1 | +----------+
Przykład 2 – Wyrażenie nieliczbowe
Oto, co się dzieje, gdy wartość jest nie numeryczne.
SELECT ISNUMERIC('Hey!') AS Result;
Wynik:
+----------+ | Result | |----------| | 0 | +----------+
Przykład 3 – Przykład bazy danych
Oto przykład użycia ISNUMERIC()
w WHERE
klauzula podczas odpytywania bazy danych:
USE WideWorldImportersDW; SELECT COUNT(*) AS [Count] FROM Dimension.Customer WHERE ISNUMERIC([Postal Code]) = 1;
Wynik:
+---------+ | Count | |---------| | 402 | +---------+
Zwraca to liczbę wszystkich wierszy z numerycznym kodem pocztowym.
Nieoczekiwane wyniki? Gdy nienumeryczne JEST Numeryczne
Niektóre znaki są traktowane jako numeryczne, nawet jeśli nie są liczbą. Jest to coś, o czym musisz pamiętać podczas korzystania z tej funkcji, w przeciwnym razie możesz uzyskać wyniki, których się nie spodziewasz.
Zobacz Znaki nieliczbowe, które zwracają wartość dodatnią podczas używania ISNUMERIC()
po wyjaśnienie i przykłady.