mysql 中用正则表达式如何取一个字符串中指定的字段,

mysql 中用正则表达式如何取一个字符串中指定的字段,,第1张

substring_index(input,split,index):input为要截取的字符,split为分隔符,Index为要截取第index个分隔符左(index为正)或右(index为负)的字符串

举例:

'Provider="RiskManagement" finalScore="65" RGID="100397278"'     //获取finalScore的值

1、获取finalScore右边的字符

select substring_index('Provider="RiskManagement" finalScore="65" RGID="100397278"','finalScore="',-1)

2、再获取" RGID="左边的字符

select substring_index(substring_index('Provider="RiskManagement" finalScore="65" RGID="100397278"','finalScore="',-1),'" RGID="',1)

扩展资料

MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。

1、字符串截取:left(str, length)

mysql>select left('sqlstudy.com', 3)

| left('sqlstudy.com', 3) |

| sql |

2、字符串截取:right(str, length)

mysql>select right('sqlstudy.com', 3)

| right('sqlstudy.com', 3) |

| com |

你是用PHP编程吗?用正则表达式模式匹配很容易解决你这个问题,假如你数据库表名为db1.tb1,假设内容“a中国日报 919901223”的字段名是p,内容“$aHOW AR YOU $b……”的字段名是q,那么下面的代码可以取出你要的东西:

<?php

mysql_connect(....)

$sql='select p,q from db1.tb1'

$res=mysql_query($sql)

while($row=mysql_fetch_array($res)){

if (preg_match("/a(\w+) 9/",$row[p],$matches)

echo "$matches[1]<br>\n"

if (preg_match("/\$a(.*?)\$b/",$row[q],$matches)

echo "$matches[1]<br>\n"

}

mysql_free_result($res)

mysql_close()

?>

DB version: 5.7.25-log 和 8.0.18

1. RLIKE() 为REGEXP同义词,见下

2. REGEXP() 完整表达式 expr REGEXP pat

>如果字符串expr与模式pat指定的正则表达式匹配,则返回1,否则返回0。

>如果expr或pat为NULL,则返回值为NULL。

>正则表达式规则明细及使用案例见下方。

3. NOT REGEXP() 完整表达式 expr NOT REGEXP pat 或者 expr NOT RLIKE pat 。

与 NOT (expr REGEXP pat) 相同。

1. REGEXP_LIKE() REGEXP 和 RLIKE 是 REGEXP_LIKE() 的同义词。

使用明细见上面5.7版本 '正则表达式规则'

2. REGEXP_INSTR()完整表达式 REGEXP_INSTR(expr, pat[, pos[, occurrence[, return_option[, match_type]]]])

>返回与模式 pat 指定的正则表达式匹配的字符串 expr 的子字符串的起始索引,如果没有匹配则为0。

>如果 expr 或 pat 为NULL,则返回值为NULL。字符索引从1开始。

完整表达式各参数含义:

pos : 从 expr 的 pos 位置开始搜索,默认为1;

occurrence : 返回第 occurrence 个匹配的子字符串,默认为1;

return_option : 返回类型,如果为0,则返回匹配到的子字符串的第一个字符的位置,如果为1,则返回匹配到的子字符串最后一个字符的位置+1,默认为0;

match_type : 匹配类型,包含以下值,可同时使用一个或多个;

如果在match_type中指定了矛盾选项的字符,则以最右边的字符为准。

3. REGEXP_REPLACE()完整表达式 REGEXP_REPLACE(expr, pat, repl[, pos[, occurrence[, match_type]]])

>用替换字符串 repl 替换字符串 expr 中与模式 pat 指定的正则表达式匹配的匹配项,并返回结果字符串。

>如果expr,pat或repl为NULL,则返回值为NULL

pos , occurrence , match_type 参数含义见 REGEXP_INSTR()

4. REGEXP_SUBSTR()完整表达式 REGEXP_SUBSTR(expr, pat[, pos[, occurrence[, match_type]]])

>返回与模式 pat 指定的正则表达式匹配的字符串 expr 的子字符串;如果不匹配,则返回NULL。

>如果expr或pat为NULL,则返回值为NULL。

pos , occurrence , match_type 参数含义见 REGEXP_INSTR()


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6112101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存