SQL ISNUMERIC 函数

SQL ISNUMERIC 函数用于验证一个表达式是否为数字。如果值为数字,ISNUMERIC 函数将返回 1;否则,将返回 0。

例如,作为一名电子商务所有者,您想向美国的所有客户发送圣诞节礼品卡。如果您的结果返回了奇怪的邮政编码(非数字邮政编码,例如 ST1 RG4),该怎么办?为了避免这种情况,我们可以使用 ISNUMERIC 来限制结果。

SQL Server ISNUMERIC 函数语法

ISNUMERIC 函数的语法是:

SELECT ISNUMERIC ([Check_Expression])
FROM [Source]
  • Check_Expression:请指定要检查数字值的有效表达式或列名。isNumeric 函数将检查列值是否为数字。

当用户指定的表达式是有效的数字数据类型时,ISNUMERIC 函数将返回 1。否则,它将返回 0。下表将显示正确的数字数据类型

inttinyint
smallintbigint
moneysmallmoney
floatdecimal
numericfloat

SQL Server ISNUMERIC 函数会为一些不是数字的字符返回 1,例如负号(-)、正号(+)、逗号(,)以及美元符号($)等有效的货币符号。在此 ISNUMERIC 函数示例中,我们将使用以下数据

表结构如下

SQL Server ISNUMERIC 函数

如果观察上面的截图,有五列,其中 2 列是 NVarchar 类型,1 列是 Money 类型,另一列是 Float 类型,最后一列是 Integer 类型。

在此示例中,我们将使用 IsNumeric 函数检查 Lastname、[YearlyIncome]、[Tax] 和 [Variable pay] 列是否包含数字数据。

SELECT [FirstName]
      ,[LastName]
      ,ISNUMERIC([LastName]) AS [Name_Flag]
      ,[YearlyIncome]	
      ,ISNUMERIC([YearlyIncome]) AS [Income_Flag]
      ,[Tax]
      ,ISNUMERIC([Tax]) AS [Tax_Flag]
      ,[Variable Pay]
      ,ISNUMERIC([Variable Pay]) AS [Pay_Flag]
  FROM [SQLIsNumeric]
SQL ISNUMERIC Function 3

在下面的语句中,我们使用 IsNumeric 函数检查 LastName 列是否为数字。我们还使用 SQL Server 中的 别名 列重新指定了一个名为 Name_Flag 的新列。

ISNUMERIC([LastName]) AS [Name_Flag]

SQL ISNUMERIC 函数示例 1

以下查询将展示使用 IsNumeric 函数的多种方法。

SELECT ISNUMERIC('12345') AS Example1;
SELECT ISNUMERIC(12345) AS Example2;
SELECT ISNUMERIC(2 * 4 + 5) AS Example3;
SELECT ISNUMERIC('2.0e9') AS Example4;
SELECT ISNUMERIC($12345) AS Example5;

SELECT ISNUMERIC('A12345') AS Example6;
SELECT ISNUMERIC('09-08-2016') AS Example7;
ISNUMERIC Function 4

以下代码行将把字符串“12345”转换为数字并检查它是否是数字。

SELECT ISNUMERIC('12345') AS Example1;

正如我们之前所说,IsNumeric 函数将为美元符号($)返回 1。

SELECT ISNUMERIC($12345) AS Example5;

在下面的语句中,我们同时使用了字母和数字。它返回零,因为它无法转换 A。

SELECT ISNUMERIC('A12345') AS Example6;

ISNUMERIC 函数示例 2

以下查询将向您展示典型的 IsNumeric 功能。

SELECT ISNUMERIC('-') AS Example1;
SELECT ISNUMERIC('+') AS Example2;
SELECT ISNUMERIC('
ISNUMERIC Function 5

SQL ISNUMERIC 在 CASE 语句中的应用

在此示例中,我们将在 CASE 语句 中使用 IsNumeric 函数。在开始示例之前,让我们先看看 sql 表中的数据。

ISNUMERIC 代码

SELECT [Name]
      ,[City]
      ,[PostCode]
      ,CASE 
	   WHEN ISNUMERIC([PostCode]) <> 1 THEN 'N'
	   ELSE 'Y'
       END AS [PostCode_Flag]
  FROM [IsNumeric Example2]

以下语句将检查 ISNUMERIC([PostCode]) 的结果是否不等于 1。如果结果为真,则返回“N”,否则返回“Y”。

WHEN ISNUMERIC([PostCode]) <> 1 THEN 'N'  ELSE 'Y'