我正在尝试使用MySQL在文本中查找文本。我有一个值字段,该值有些是非结构化的,但是幸运的是,数据输入由新行分隔。我正在尝试查看是否可以提取“ Education”的值,该值基本上是一个子字符串,该子字符串在“ Education:”之后开始,并在以下数据中以\ n新行字符结束:
'Children: 5
Education: College
Employment: Homemaker
Marital Status: Married'
我看过MID函数,但是由于教育的价值各不相同,因此长度不是标准的。我已经搜索过MySQL字符串函数,但是还没有找到一种解决方案可以让我在两个位置之间进行搜索,其中包括一个由正则表达式字符定义的位置-REGEX只是提供匹配项,而不是位置。
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:', '')