Ich habe ein Skript, in dem ich versuche, neue Jobnamen mit vorhandenen Jobnamen in der Datenbank abzugleichen.
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]?([[:>:]]|$)');
Die Tabelle Staging.TMP_OC1 enth?lt einen Datensatz für die neue Position, in diesem Fall Softwareentwickler, USA. Ich m?chte es mit der in der Datenbank vorhandenen Berufsbezeichnung ?Softwareentwickler“ abgleichen. Der obige Regex-Code funktioniert für einige Positionen, für andere jedoch nicht. Bitte helfen Sie mit, einen umfassenderen Plan zu entwickeln.
Ich verwende MySQL V8.
您不需要測(cè)試字符串的開頭/結(jié)尾;這些是“單詞邊界”。
MySQL 8.0 使用 \b
作為兩個(gè)字邊界,而不是 [[:<:]]
和 [[:>:]]
在某些情況下,8.0 需要將反斜杠加倍。
這可能有效:
REGEXP CONCAT('\\b', j.Description, 's?\\b')