首页 > 解决方案 > Mysql中有没有办法从第二次出现的动态长度中提取字符串

问题描述

在 MySql DB 中,我有一列字符串,例如

xx-11|Hello Shrishti|@KFC near you|Bhopal|...

由管道运算符“|”连接的不同字段。有时没有额外的字段,例如"xx-22|Hello Chandu".

我想在第二次出现“|”后提取字符串 如果存在额外的字段,如果不存在额外的字段,则为空字符串。

任何人都可以用任何逻辑帮助我。我已经尝试过INSTR,SUBSTR等,但我无法提出正确的解决方案。

提前致谢。

标签: mysql

解决方案


使用两次调用LOCATE to get the position of the 2nd | , and SUBSTR()` 以获取之后的所有内容。

SUBSTR(columnName, LOCATE('|', columName, LOCATE('|', columName)+1)+1)

如果您使用的是 MySQL 8.x,则可以使用REGEXP_REPLACE()

REGEXP_REPLACE(columnName, '^[^|]*\\|[^|]*\\|', '')

正则表达式从开头匹配^到第二个|


推荐阅读