写这篇博文主要就是想记录一下在数据处理过程中遇到的问题,困扰了好久才解决!
问题背景:一张表格,其中某字段为字符串形式,内容为中文、英文或中英文混合语句,此外预置一批关键词,希望将命中关键词的字符串字段输出,并将命中的关键词保存至新的字段中。
产生问题:此前的工作中,查看是否命中关键词,大多采用LIKE或RLIKE函数。假设以【淘宝 OR 京东 OR 拼多多】为关键词,通常采用
SELECT XXX, XXX, XXX(想要输出的字段名)FROM 表名
WHERE 字符串字段名 RLIKE '淘宝|京东|拼多多';
但问题在于:该查询方式虽然可设置关键字条件,但无法获取命中的是哪个关键词,也就无法将命中关键词输出至新的一列字段。
问题解决:通过对匹配函数的学习,发现可以采用REGEXP_EXTRACT函数输出关键词、采用REGEXP或RLIKE函数匹配关键词的方式实现该功能,实现方式如下:
SELECT XXX, XXX, XXX(想要输出的字段名), REGEXP_EXTRACT(字符串字段名, '淘宝|京东|拼多多', 0) AS Keywords
FROM 表名 WHERE 字符串字段名 REGEXP '淘宝|京东|拼多多';
注:条件语句中的REGEXP函数也可换成RLIKE函数,同等效果。
综上,在匹配关键词的同时,将命中的关键词存储至Keywords字段中,问题解决!