Heim > Fragen und Antworten > Hauptteil
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.
P粉5093831502024-04-07 00:55:41
您不需要测试字符串的开头/结尾;这些是“单词边界”。
MySQL 8.0 使用 \b
作为两个字边界,而不是 [[:<:]]
和 [[:>:]]
在某些情况下,8.0 需要将反斜杠加倍。
这可能有效:
REGEXP CONCAT('\\b', j.Description, 's?\\b')