SQL Server (Transact-SQL) ISNUMERIC() 函数用于测试表达式是否为有效的数值类型。如果表达式是有效的数值类型,则该函数返回 1,否则返回 0。
语法
ISNUMERIC(expression)
参数
expression | 必填。 指定要测试有效数字类型的值。 |
返回值
如果是有效的数字类型表达式返回1 。否则返回 0。
示例 1:
下面的示例显示了 ISNUMERIC() 函数的用法。
SELECT ISNUMERIC('Paris');
Result: 0
SELECT ISNUMERIC(NULL);
Result: 0
SELECT ISNUMERIC(0);
Result: 1
SELECT ISNUMERIC(10);
Result: 1
SELECT ISNUMERIC(10.25);
Result: 1
SELECT ISNUMERIC('10.25');
Result: 1
示例 2:
考虑一个名为 Product 的数据库表,其中包含以下记录:
ProductName | Price | StockQuantity | OrderQuantity |
---|---|---|---|
Apple | 1.00 | 100 | 20 |
Banana | 1.25 | 120 | 30 |
Orange | 2.15 | 105 | NULL |
Watermelon | 3.50 | 75 | 15 |
如果OrderQuantity i> 是可选的并且可以包含 NULL 值。下面提到的语句将给出 NULL 值。
SELECT *, Price * (StockQuantity + OrderQuantity) AS Inventory
FROM Product;
这将产生如下所示的结果:
ProductName | Price | StockQuantity | OrderQuantity | Inventory |
---|---|---|---|---|
Apple | 1.00 | 100 | 20 | 120.0 |
Banana | 1.25 | 120 | 30 | 187.5 |
Orange | 2.15 | 105 | NULL | NULL |
Watermelon | 3.50 | 75 | 15 | 315.0 |
为了避免这种情况,ISNUMERIC()函数可以与 IIF() 函数结合使用,为包含 NULL 值的列提供替代值。
SELECT *,
Price * (StockQuantity + IIF(ISNUMERIC(OrderQuantity)=0, 0, OrderQuantity)) AS Inventory
FROM Product;
这将产生如下所示的结果:
ProductName | Price | StockQuantity | OrderQuantity | Inventory |
---|---|---|---|---|
Apple | 1.00 | 100 | 20 | 120.0 |
Banana | 1.25 | 120 | 30 | 187.5 |
Orange | 2.15 | 105 | NULL | 225.75 |
Watermelon | 3.50 | 75 | 15 | 315.0 |