REGEXP 单词匹配

REGEXP word match

提问人:Shaheer Jada 提问时间:4/21/2022 最后编辑:jmrkShaheer Jada 更新时间:4/26/2022 访问量:37

问:

我有一个脚本,我正在尝试将新的职位与数据库中的现有职位相匹配。

SELECT 
a.title AS JobTitle,
j.Description  AS MatchedJobTitle,
f.Description      AS Family,
p.ShortDescription AS ColourComplexity,
j.IsCustomerFacing,
j.JobTitleID
FROM JobTitle j
CROSS JOIN Staging.TMP_OC1 a
INNER JOIN JobFamily f ON j.JobFamilyId = f.JobFamilyID
INNER JOIN Pathways p ON f.PathwaysID = p.PathwaysID        
WHERE a.title REGEXP CONCAT('([[:<:]]|^)', j.Description, '[s]?([[:>:]]|$)');

暂存 .TMP_OC1 表有一条记录,即新的职位名称,在本例中为 Software Developer,USA。 我想将它与dbs现有的职位相匹配,即“软件开发人员”。 上面的正则表达式代码适用于某些职位,但不适用于其他职位。 请协助制定一个更全面的。

我正在使用 mysql V8。

MySQL 正则表达式 匹配

评论

0赞 zessx 4/21/2022
works for some job titles but not others:请提供一个数据集和一些示例,哪些可以工作,哪些地方无效。这将有助于人们了解问题的真正含义。
0赞 Shaheer Jada 4/21/2022
不适用于这些: - zzzDeveloper - 初级服务台工程师(学习) - 中期需要前台服务员 - 信息技术推动者(12 个月的 ITE 计划) - 前端 (React) 开发人员:
0赞 Shaheer Jada 4/21/2022
适用于这些: 直销助理 Shopify 设计/网页开发人员 销售顾问 销售和市场营销 短期工作机会 毕业生计划
0赞 Akina 4/21/2022
[[:<:]]是 Spencer 库支持的旧式词边界。从版本 8.0.4 开始,MySQL 使用不支持它的 ICU 库。请参阅正则表达式兼容性注意事项。所以使用 std。 相反。\b

答:

0赞 Rick James 4/26/2022 #1
  • 您无需测试字符串的开头/结尾;这些是“词语界限”。

  • MySQL 8.0 同时使用两个字边界,而不是 和\b[[:<:]][[:>:]]

  • 在某些情况下,8.0 需要将反斜杠加倍。

这可能有效:

REGEXP CONCAT('\\b', j.Description, 's?\\b')