我有一个脚本,我试图将新的职位名称与数据库中的现有职位名称进行匹配。
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。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您不需要测试字符串的开头/结尾;这些是“单词边界”。
MySQL 8.0 使用
\b作为两个字边界,而不是[[:<:]]和[[:>:]]在某些情况下,8.0 需要将反斜杠加倍。
这可能有效:
REGEXP CONCAT('\\b', j.Description, 's?\\b')