recherche

Maison  >  Questions et réponses  >  le corps du texte

Expression régulière pour faire correspondre les mots

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.

P粉957723124P粉957723124259 Il y a quelques jours959

répondre à tous(1)je répondrai

  • P粉509383150

    P粉5093831502024-04-07 00:55:41

    • 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 :

    REGEXP CONCAT('\b', j.Description, 's?\b')

    répondre
    0
  • Annulerrépondre