mysql 从字段里面取数字
时间: 2023-08-03 22:51:00 浏览: 218
如果您想从 MySQL 表的某个字段中获取数字,可以使用 MySQL 内置的 `REGEXP` 函数来进行匹配。
以下是一个示例查询,假设您的表名为 `mytable`,您需要从 `mycolumn` 字段中获取数字:
```sql
SELECT REGEXP_SUBSTR(mycolumn, '[0-9]+') AS mynumber FROM mytable;
```
这个查询将返回一个名为 `mynumber` 的新列,其中包含从 `mycolumn` 字段中提取出的数字。在这个例子中,使用正则表达式 `[0-9]+` 进行匹配,表示匹配一个或多个数字。
请注意,如果您的表中的字段中包含多个数字,则此查询将返回每个数字的匹配项。如果您只需要第一个数字,可以使用 `REGEXP_SUBSTR` 函数的第三个参数来指定开始搜索的位置,如下所示:
```sql
SELECT REGEXP_SUBSTR(mycolumn, '[0-9]+', 1, 1) AS mynumber FROM mytable;
```
在这个查询中,第三个参数 `1` 表示从字符串的第一个字符开始搜索,第四个参数 `1` 表示只返回第一个匹配项。
相关问题
mysql process_management表中payment_method字段的数据是通过","分割的数字如何查询可以查出payment_method字段等于某个数字
在MySQL中,如果你的`payment_method`字段是以逗号","分隔的数字列表,你可以使用`FIND_IN_SET()`函数或者子查询来查询特定数字是否存在。以下是两种方法:
1. 使用`FIND_IN_SET()`函数:
```sql
SELECT * FROM process_management
WHERE FIND_IN_SET('你的目标数字', REPLACE(payment_method, ',', '')) > 0;
```
这里,`REPLACE(payment_method, ',', '')`是为了去掉逗号,将字符串转换成单一值数组,再通过`FIND_IN_SET`查找目标数字是否在里面。
2. 使用子查询和IN关键字:
```sql
SELECT * FROM process_management
WHERE payment_method IN (
SELECT GROUP_CONCAT(DISTINCT UNNEST(SPLIT(payment_method, ',')))
FROM process_management
)
AND UNNEST(SPLIT(payment_method, ',')) = '你的目标数字';
```
这里,首先使用子查询将`payment_method`按逗号分割并合并为单行的数值列表,然后检查目标数字是否在合并后的列表中。
注意:上述方法假设你的数据库支持SPLIT()或UNNEST()等函数来分割字符串,例如在MySQL的MariaDB 10.5+版本中可用,如果不是,可能需要使用其他方法,比如正则表达式或者自定义函数(取决于你的数据库版本)。
阅读全文