搜索

首页  >  问答  >  正文

匹配单词的正则表达式

我有一个脚本,我试图将新的职位名称与数据库中的现有职位名称进行匹配。

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。

P粉957723124P粉957723124228 天前868

全部回复(1)我来回复

  • P粉509383150

    P粉5093831502024-04-07 00:55:41

    • 您不需要测试字符串的开头/结尾;这些是“单词边界”。

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

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

    这可能有效:

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

    回复
    0
  • 取消回复