当前位置: 首页> 教育> 锐评 > 菏泽网站建设效果_微信公众号公众平台_网站系统_江门关键词优化公司

菏泽网站建设效果_微信公众号公众平台_网站系统_江门关键词优化公司

时间:2025/8/25 0:27:41来源:https://blog.csdn.net/weixin_58587245/article/details/146542713 浏览次数:0次
菏泽网站建设效果_微信公众号公众平台_网站系统_江门关键词优化公司

今天又来总结工作中遇到的问题了,今天是SQL,spark引擎

需求描述,筛选渠道包含”线上化“的数据

也就是讨论where里面的这个筛选条件怎么写

一般起手都是

where QD like '%线上化%‘

学习了其他的写法:

1.INSTR函数

where INSTR(QD,"线上化") <> 0

INSTR函数的介绍:

INSTR 函数通常用于查找一个子字符串在另一个字符串中首次出现的位置。如果找到子字符串,函数会返回其首次出现的位置(位置从 1 开始计数);如果未找到,函数会返回 0。

2.正则表达式匹配

where QD REGEXP "线上化"

好处在于,如果我的应用场景是包含多个字符串其中一个的

WHERE QD REGEXP '金融科技部|投资银行部|人力资源部'

| 表示或关系,意味着只要 QD 列中的字符串包含 “金融科技部”、“投资银行部” 或者 “人力资源部” 中的任意一个,就会被筛选出来。

正则表达式的匹配操作通常会比普通的字符串比较操作更耗费资源,所以在处理大量数据时,可能会对性能产生一定影响。

三者的比较,参考豆包的回复

功能

  • WHERE QD LIKE '%线上化%'LIKE 是 SQL 中用于字符串模糊匹配的操作符。% 是通配符,表示任意数量(包括零个)的任意字符。因此,'%线上化%' 表示匹配包含 “线上化” 的任意字符串。它只能处理简单的通配符匹配,无法进行复杂的模式匹配。
  • WHERE INSTR(QD, "线上化") <> 0INSTR 是一个函数,用于返回子字符串在字符串中第一次出现的位置。如果 QD 列包含 “线上化”,则 INSTR(QD, "线上化") 的返回值大于 0;如果不包含,则返回 0。因此,INSTR(QD, "线上化") <> 0 表示 QD 列包含 “线上化”。
  • WHERE QD REGEXP "线上化"REGEXP 是 SQL 中的正则表达式匹配操作符,用于按照正则表达式模式来匹配字符串。“线上化” 是一个简单的正则表达式模式,表示匹配包含 “线上化” 的字符串。正则表达式可以进行更复杂的模式匹配,如字符类、量词、分组等。

性能

  • WHERE QD LIKE '%线上化%':由于 LIKE 操作符使用了通配符 % 在开头,数据库无法使用索引进行快速查找,因此性能通常较差,尤其是在处理大量数据时。
  • WHERE INSTR(QD, "线上化") <> 0INSTR 函数同样无法利用索引进行优化,需要对每一行数据进行全字符串扫描,因此性能也较差。
  • WHERE QD REGEXP "线上化":正则表达式匹配通常比 LIKE 和 INSTR 更复杂,需要更多的计算资源,因此性能可能是三者中最差的。

总结

  • 如果只需要进行简单的模糊匹配,建议使用 LIKE 操作符,因为它的语法简单,性能相对较好。
  • 如果对性能要求不高,且需要使用函数进行更灵活的处理,可以使用 INSTR 函数。
  • 如果需要进行复杂的模式匹配,如匹配特定格式的字符串、进行字符类匹配等,则应使用 REGEXP 操作符。
关键字:菏泽网站建设效果_微信公众号公众平台_网站系统_江门关键词优化公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: