MariaDB 检查一个字符串字段是否包含一个数字

本文讨论在 MariaDB 中如何检查一个字符串字段中是否包含数字。

发布于

有时候,您可能需要检查一个字符串字段中是否包含字符或者数字。 MariaDB REGEXP 操作符可以帮到您。

REGEXP 是一个用于验证字符串是否和指定的正则表达式匹配的操作符。

REGEXPLIKE 不同, LIKE 执行的是全部匹配,而 REGEXP 执行部分匹配。

示例

假设我们有一个 notes 表,表中的数据如下:

SELECT * FROM notes;

输出:

+----+------------------------+
| id | note                   |
+----+------------------------+
|  1 | Hello World            |
|  2 | This is for you, 2022. |
|  3 | AAAA                   |
|  4 | B-2-9-6                |
|  5 | 1234567890             |
+----+------------------------+

匹配含有数字的值

以下语句查找那些 note 列中包含数字的行:

SELECT *
FROM notes
WHERE note REGEXP '[0-9]+';

输出:

+----+------------------------+
| id | note                   |
+----+------------------------+
|  2 | This is for you, 2022. |
|  4 | B-2-9-6                |
|  5 | 1234567890             |
+----+------------------------+

如果要查找那些只包含数字的行,请使用以下语句:

SELECT *
FROM notes
WHERE note REGEXP '^[0-9]+$';

输出:

+----+------------+
| id | note       |
+----+------------+
|  5 | 1234567890 |
+----+------------+

匹配还有字母的值

以下语句查找那些 note 列中包含字母的行:

SELECT *
FROM notes
WHERE note REGEXP '[a-zA-Z]+';

输出:

+----+------------------------+
| id | note                   |
+----+------------------------+
|  1 | Hello World            |
|  2 | This is for you, 2022. |
|  3 | AAAA                   |
|  4 | B-2-9-6                |
+----+------------------------+

如果要查找那些只包含字母的行,请使用以下语句:

SELECT *
FROM notes
WHERE note REGEXP '^[a-zA-Z]+$';

输出:

+----+------+
| id | note |
+----+------+
|  3 | AAAA |
+----+------+

结论

在本例中,我们使用 REGEXP 函数来查找与模式匹配的所有行。

REGEXPLIKE 不同, LIKE 执行的是全部匹配,而 REGEXP 执行部分匹配。