mysql - 如何使用 MySQL 拆分每个有空格的数据或字符串?
问题描述
我写了一个查询是这样的:
SELECT mrt_name as MRT ,
operation_alpha_numeric_codes as Original,
SUBSTRING_INDEX(operation_alpha_numeric_codes,' ', 1) as First_code,
SUBSTRING_INDEX(operation_alpha_numeric_codes,' ', -1) as Second_Code,
SUBSTRING_INDEX(operation_alpha_numeric_codes,' ', -2) as Third_Code
FROM scraping.xp_pn_mrt;
我得到了这样的结果
如您所见,如果该值没有相应的空格或数据,则second_code
复制该值original
或该值。first_code
此外,third
代码会获取其中second_code
包含第三个代码的记录。当代码中没有相应的值时,如何防止数据被复制或将其设置为空白?如何在不复制第二个代码的情况下获得第三个代码?有人可以帮我解决我的问题吗?有什么问题吗?非常感谢。
解决方案
由于您使用的是 MariaDB,因此您可以使用它REGEXP_REPLACE
来提取您想要的代码部分:
SELECT
operation_alpha_numeric_codes as Original,
REGEXP_REPLACE(operation_alpha_numeric_codes, '^([^ ]+)(?: ([^ ]+))?(?: ([^ ]+))?$', '\\1') as First_code,
REGEXP_REPLACE(operation_alpha_numeric_codes, '^([^ ]+)(?: ([^ ]+))?(?: ([^ ]+))?$', '\\2') as Second_code,
REGEXP_REPLACE(operation_alpha_numeric_codes, '^([^ ]+)(?: ([^ ]+))?(?: ([^ ]+))?$', '\\3') as Third_code
FROM data
(部分)样本数据的输出
Original First_code Second_code Third_code
NS23 NS23
NS24 NE6 CC1 NS24 NE6 CC1
NS25 EW13 NS25 EW13
这是一个也适用于 MySQL 5.7 的版本,RLIKE
用于检查输入是否与给定的模式匹配:
SELECT
operation_alpha_numeric_codes as Original,
SUBSTRING_INDEX(operation_alpha_numeric_codes, ' ', 1) AS First_code,
CASE WHEN operation_alpha_numeric_codes RLIKE '^([^ ]+)$' THEN ''
WHEN operation_alpha_numeric_codes RLIKE '^([^ ]+)( ([^ ]+))?$' THEN SUBSTRING_INDEX(operation_alpha_numeric_codes, ' ', -1)
ELSE SUBSTRING_INDEX(SUBSTRING_INDEX(operation_alpha_numeric_codes, ' ', 2), ' ', -1)
END AS Second_code,
CASE WHEN operation_alpha_numeric_codes RLIKE '^([^ ]+)( ([^ ]+)){2}$' THEN SUBSTRING_INDEX(operation_alpha_numeric_codes, ' ', -1)
ELSE ''
END AS Third_code
FROM data
推荐阅读
- java - 导入 Google 表格时如何使用 apache poi 显示系列标签
- codenameone - CheckBox.setToggleButton 不存在
- c# - 堆积条形图 C# Windows 窗体
- r - 如何在R中以特殊方式使用tapply
- javascript - 如何修复钩子以在 React JS 中设置状态?
- arrays - 当值明显匹配时,为什么我会遇到方法错误?
- python - 在 pymongo 中重新尝试失败的批量插入
- ios - 当应用程序在ios swift中处于活动状态时,如何为联系人进行后台同步?
- performance - 如何确定内存组织是否遵循行主要顺序或列主要顺序?
- python - R CMD javareconf -e 有更好的解决方案吗?