我有一个脚本,我试图将新的职位名称与数据库中的现有职位名称进行匹配。
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]?([[:>:]]|$)');
Staging.TMP_OC1 表有一条记录,即新职位,在本例中为 Software Developer,USA。 我想将其与数据库现有的职位名称“软件开发人员”相匹配。 上面的正则表达式代码适用于某些职位,但不适用于其他职位。 请协助制定一个更全面的计划。
我使用的是mysql V8。
您不需要测试字符串的开头/结尾;这些是“单词边界”。
MySQL 8.0 使用
\b
作为两个字边界,而不是[[:<:]]
和[[:>:]]
在某些情况下,8.0 需要将反斜杠加倍。
这可能有效: