我有一個(gè)腳本,我試圖將新的職位名稱與數(shù)據(jù)庫(kù)中的現(xiàn)有職位名稱進(jìn)行匹配。
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。 我想將其與數(shù)據(jù)庫(kù)現(xiàn)有的職位名稱“軟件開發(fā)人員”相匹配。 上面的正則表達(dá)式代碼適用于某些職位,但不適用于其他職位。 請(qǐng)協(xié)助制定一個(gè)更全面的計(jì)劃。
我使用的是mysql V8。
您不需要測(cè)試字符串的開頭/結(jié)尾;這些是“單詞邊界”。
MySQL 8.0 使用 \b
作為兩個(gè)字邊界,而不是 [[:<:]]
和 [[:>:]]
在某些情況下,8.0 需要將反斜杠加倍。
這可能有效:
REGEXP CONCAT('\b', j.Description, 's?\b')