J'ai un script dans lequel j'essaie de faire correspondre les nouveaux noms de tâches avec les noms de tâches existants dans la base de données.
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]?([[:>:]]|$)');
La table Staging.TMP_OC1 contient un enregistrement pour le nouveau poste, dans ce cas Software Developer,USA. Je souhaite le faire correspondre au titre de poste existant de la base de données « Développeur de logiciels ». Le code regex ci-dessus fonctionne pour certaines positions mais pas pour d'autres. S'il vous plaît, aidez-nous à élaborer un plan plus complet.
J'utilise MySQL V8.
Vous n'avez pas besoin de tester le début/la fin de la chaîne ; ce sont des « limites de mots ».
MySQL 8.0 utilisant
b
作为两个字边界,而不是[[:<:]]
和[[:>:]]
8.0 nécessite de doubler les barres obliques inverses dans certains cas.
Cela pourrait fonctionner :