铁岭网站开发,华为商城官网手机版app,湖南省建设厅网站官网,关键词首页排名代发MySQL如何从数据中截取所需要的字符串
背景
有这样的一个场景,我想从我的表里面进行数据截取#xff0c;我的数据内容大致如下#xff1a; 张三-建外SOHO-2-16 POA 20210518.pdf 我想获取数据中的#xff1a;20210518这一日期部分#xff0c;需要如何实现#xff1f;
解…MySQL如何从数据中截取所需要的字符串
背景
有这样的一个场景,我想从我的表里面进行数据截取我的数据内容大致如下 张三-建外SOHO-2-16 POA 20210518.pdf 我想获取数据中的20210518这一日期部分需要如何实现
解决过程
这种情况可以使用MySQL的SUBSTRING_INDEX函数来实现
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(column_name, , -1), ., 1) AS extracted_date
FROM your_table;使用 SUBSTRING_INDEX(column_name, ’ , -1) 代表从右向左截取列值以空格为分隔符返回最后一个部分即 “20210518.pdf”。然后再次使用 SUBSTRING_INDEX(…, ‘.’, 1) 代表从左向右截取这个部分以点号作为分隔符返回日期部分即20210518。
如果我表中的数据有可能是Man 101, Woman C4, Gender 1, The Barracks,Zhang san,Receipt20220727(1).pdf 这种那么通过上边的函数就不能实现了。因为数据样本中日期的位置和格式不固定所以就可以考虑使用正则表达式来提取日期。
SELECT REGEXP_SUBSTR(column_name, [0-9]{8}) AS extracted_date
FROM your_table;
这个查询使用了正则表达式 [0-9]{8}它匹配包含8个数字字符即日期部分的子字符串。REGEXP_SUBSTR 函数将匹配的子字符串提取出来作为 extracted_date。
另外附上SUBSTRING_INDEX函数的简要说明详情请参考官方文档 SUBSTRING_INDEX(str,delim,count) 参数所代表的含义解释如下 返回从字符串 str 的第 count 个出现的分隔符-即 delim 之后的字符串部分。 如果 count 是正数则返回从 str 左边开始计数的第 count 个 分隔符-delim不包含分隔符delim左边的字符串。 如果 count 是负数则返回从 str 右边开始计数的第 (count 的绝对值) 个分隔符-delim不包含分隔符delim右边的字符串。 总结
通过SUBSTRING_INDEX函数和REGEXP_SUBSTR函数可以实现以上需求具体可参考MySQL官方文档