mysql - Mysql中有没有办法从第二次出现的动态长度中提取字符串
问题描述
在 MySql DB 中,我有一列字符串,例如
xx-11|Hello Shrishti|@KFC near you|Bhopal|...
由管道运算符“|”连接的不同字段。有时没有额外的字段,例如"xx-22|Hello Chandu"
.
我想在第二次出现“|”后提取字符串 如果存在额外的字段,如果不存在额外的字段,则为空字符串。
任何人都可以用任何逻辑帮助我。我已经尝试过INSTR
,SUBSTR
等,但我无法提出正确的解决方案。
提前致谢。
解决方案
使用两次调用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, '^[^|]*\\|[^|]*\\|', '')
正则表达式从开头匹配^
到第二个|
。
推荐阅读
- javascript - 重构 nodejs 模块
- css - Antd 黑暗主题覆盖了我自己的 css。如何解决?
- javascript - 单选按钮 onChange 事件
- neo4j - 密码查询以将图形作为对象返回,其中每个父节点都包含其子节点的数组?
- kubernetes - microk8s 中的 Traefik 总是 404 通过 HTTPS
- ios - 如何在 AppDelegate 中初始化 Core Data 的持久化容器并在整个应用程序中使用它?
- c++ - C++:实现 ln(a) 的数值逼近
- python - VBA运行python脚本 - 权限错误
- python - 根据等于熊猫数据框中特定值的列定位最小日期?
- python - 在将字符串添加到电子邮件时获取 \n