mysql ([0-9]4[0-9]|4)$如何修改只保留字符串中存在4的数据(如“4”,“3,11,12,17,18,23,24,4”,“3,11,12,17,18,23,24,4”)不保留如(“3,11,12,17,18,23,24”,3,11,12,17,18,23,54)
时间: 2024-10-19 19:03:02 浏览: 15
MySQL中的正则表达式`([0-9]4[0-9]|4)$`用于匹配以数字4结尾的字符串,或者是仅包含单个数字4的情况。如果你想从给定的字符串中筛选出只包含数字4的元素,并保持其原有的形式(例如逗号分隔),你可以使用`REGEXP`函数结合`SUBSTRING_INDEX()`函数来实现。假设我们有一个名为`data_column`的列存储了这些字符串,你可以使用以下SQL查询:
```sql
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(data_column, ',', pos + 1), ',', -1) AS filtered_data
FROM (
SELECT
data_column,
@pos := IF(@prev != '4', 1, @pos + 1) AS pos,
@prev := value
FROM
(SELECT data_column, SPLIT_STR(data_column, ',', NULL, -1) AS value
FROM your_table) t
CROSS JOIN
(SELECT @pos:=0, @prev:='') vars
WHERE
value REGEXP '^[^4]*4$'
) subquery;
```
这个查询首先使用`SPLIT_STR()`函数将字符串分割成数组,然后内部循环检查每个元素是否满足条件(以4结束或仅含一个4)。如果满足,它会提取该位置的值并作为新行返回。
请注意,`SPLIT_STR()`函数依赖于MySQL版本,如果你的数据库不支持这个函数,你需要查找相应的函数替换它,如MySQL 8及以上版本可以使用`FIND_IN_SET()`。
阅读全文