suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Regulärer Ausdruck zum Abgleichen von Wörtern

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粉957723124P粉957723124241 Tage vor911

Antworte allen(1)Ich werde antworten

  • P粉509383150

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

    • 您不需要测试字符串的开头/结尾;这些是“单词边界”。

    • MySQL 8.0 使用 \b 作为两个字边界,而不是 [[:<:]][[:>:]]

    • 在某些情况下,8.0 需要将反斜杠加倍。

    这可能有效:

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

    Antwort
    0
  • StornierenAntwort