sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan ISNUMERIC() virker i SQL Server

I SQL Server kan du bruge ISNUMERIC() funktion for at finde ud af, om et udtryk er numerisk eller ej.

Funktionen returnerer 1, hvis udtrykket er numerisk, og 0, hvis det ikke er det.

For at bruge denne funktion skal du blot sende værdien/udtrykket til funktionen, mens du kalder den.

Eksempel 1 – Numerisk udtryk

Her er et eksempel for at demonstrere, hvad der sker, når du sender et numerisk udtryk til denne funktion.

SELECT ISNUMERIC(250) AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

I dette tilfælde er værdien numerisk, og resultatet er 1.

Vi får det samme resultat, selvom værdien er angivet som en streng (omsluttet af enkelte anførselstegn).

SELECT ISNUMERIC('250') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Eksempel 2 – Ikke-numerisk udtryk

Her er, hvad der sker, når værdien ikke er numerisk.

SELECT ISNUMERIC('Hey!') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 0        |
+----------+

Eksempel 3 – Et databaseeksempel

Her er et eksempel på brug af ISNUMERIC() i en WHERE klausul ved forespørgsel i en database:

USE WideWorldImportersDW;
SELECT COUNT(*) AS [Count]
FROM Dimension.Customer
WHERE ISNUMERIC([Postal Code]) = 1;

Resultat:

+---------+
| Count   |
|---------|
| 402     |
+---------+

Dette returnerer antallet af alle rækker med et numerisk postnummer.

Uventede resultater? Når ikke-numerisk ER numerisk

Nogle karakterer behandles som værende numeriske, selv når de ikke er et tal. Dette er noget, du skal være opmærksom på, når du bruger denne funktion, ellers kan du få resultater, som du ikke forventer.

Se ikke-taltegn, der returnerer positivt, når du bruger ISNUMERIC() for en forklaring og eksempler.


  1. datetime vs datetimeoffset i SQL Server:Hvad er forskellen?

  2. Sådan kører du mysqladmin flush-hosts på Amazon RDS

  3. ML{.NET} Introduktion

  4. hvordan man bruger dbms_scheduler til at køre jobbet hvert 30. minut