如何在 SQL Server 中检测值是否至少包含一个数字

发布于

有时,您可能需要在数据库表中搜索那些在给定列中至少包含一个数字的行。

严格来说,数字可以用文字和其他符号表示,但就本文而言,“数字”是指“数字”。

下面是如何使用 T-SQL 在 SQL Server 中查找至少包含一个数字的行的示例。

示例

假设我们有一个表,其列中包含以下数据:Products``ProductName

SELECT ProductName 
FROM Products;

输出:

+-------------------------------------+
| ProductName                         |
|-------------------------------------|
| Left handed screwdriver             |
| Long Weight (blue)                  |
| Long Weight (green)                 |
| Smash 2000 Sledgehammer             |
| Chainsaw (includes 3 spare fingers) |
| Straw Dog Box                       |
| Bottomless Coffee Mugs (4 Pack)     |
| Right handed screwdriver            |
+-------------------------------------+

此列显然包含字符数据,但某些行包含该字符数据中的数字(即使它们未存储为数字类型)。

我们可以使用以下查询仅返回那些包含由数字表示的数字的行:

SELECT ProductName 
FROM Products
WHERE ProductName LIKE '%[0-9]%';

输出:

+-------------------------------------+
| ProductName                         |
|-------------------------------------|
| Smash 2000 Sledgehammer             |
| Chainsaw (includes 3 spare fingers) |
| Bottomless Coffee Mugs (4 Pack)     |
+-------------------------------------+

正如预期的那样,仅返回那些包含数字的行。

这种技术不仅限于数字。如果需要,可以修改此查询以包含其他字符。我们所做的只是为运算符指定我们自己的模式。LIKE