mysql - 在由换行符分隔的文本中查找文本
问题描述
我正在尝试使用 MySQL 在文本中查找文本。我有一个有点非结构化的值字段,但幸运的是数据输入由新行分隔。我正在尝试查看是否可以提取“Education”的值,该值基本上是一个子字符串,在“Education:”之后开始,并在下面的数据中以 \n 换行符结尾:
'Children: 5
Education: College
Employment: Homemaker
Marital Status: Married'
我查看了 MID 函数,但由于教育值不同,长度不是标准的。我已经搜索了 MySQL 字符串函数,但没有找到允许我在两个位置之间搜索的解决方案,包括一个由正则表达式字符定义的位置——正则表达式只是提供匹配,而不是位置。
SELECT id,MID(value,POSITION('Education:' IN value),30)
FROM client_data
代码按预期执行,但由于 \n 换行符的固定长度而不是位置,结果要么被截断,要么包含来自后续文本的额外字符。
我猜有一种方法可以做到这一点,我只是没有找到。
解决方案
您可以使用 REGEXP_SUBSTR 获取与正则表达式匹配的实际字符串:
REGEXP_SUBSTR(value, '^Education:.*', 1, 1, 'm')
这让你Education line
. 然后你只需:
要从该字符串中提取后面的部分:
REGEXP_REPLACE(
REGEXP_SUBSTR(value, '^Education:.*', 1, 1, 'm'),
'^Education:', '')
推荐阅读
- regex - Apache Camel / 正则表达式替换字符
- javascript - keyup 上 inputBox 的货币/会计格式
- spring-boot - 在 soring boot 中使用 graph api 实现 microsoft 身份验证的建议
- css - 弹性盒。未在同一高度上对齐的元素
- python - 如何确定 Rank-3 输入张量的权重维度?
- python - 无法使用 PyViz 示例中的面板保存散景图
- python - 使用多个输入训练 Keras 模型
- sql - 添加新表和数据时 SQL 更新相关数据
- shake-build-system - 摇 - 规则完成运行但没有产生文件:
- webassembly - 如何在 webassembly 中使用数组?