sql server—sql中的模式匹配技术,用于正确地将sting与关键字匹配,但无法获得正确的结果

gwo2fgha  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(303)

我有一个表(dbo.library),其中我构建了一个关键字库,这些关键字与公司中不同的标题和角色相关联。见下表:

CREATE TABLE dbo.Library 
(ID INT IDENTITY(1,1), 
 Persona VARCHAR(20), 
 Keyword VARCHAR(100)
 )
INSERT INTO dbo.Library 
(Persona, 
 Keyword) 
 SELECT 'CMO', 'Digital Marketing'
 UNION SELECT 'CMO', 'Marketing Operation'

假设我有另一张table,如下所示:

CREATE TABLE dbo.TargetTable
 (ID INT IDENTITY(1,1), 
  Title VARCHAR(20), 
  Persona VARCHAR(100)
  )
  INSERT INTO dbo.TargetTable
  (Title)
  SELECT 'Director of Digital transformation in Marketing'
  UNION SELECT 'Digital Marketing Analyst'
  UNION SELECT 'Marketing and Sales Operation'

现在我想加入 dbo.librarydbo.TargetTable 在title上使用模式匹配相应地更新persona列:

UPDATE A
SET Persona  = B.Persona
FROM dbo.TargetTable A 
INNER JOIN dbo.Library B 
ON title LIKE '%' + [Keyword] + '%'

这匹配关键字中的每一个字母,因此我得到的标题没有匹配到人物角色的关键字。而我真正想要的是:

UPDATE A
SET Persona = B.Persona
FROM dbo.TargetTable A
INNER JOIN dbo.Library B
ON Title LIKE '%' + 'Digital' + '%' + 'Marketing' + '%'

你知道我怎么解决这个问题吗?在使用[]时,是否有方法精确匹配关键字字符串?

klr1opcd

klr1opcd1#

用通配符替换关键字中嵌入的空格怎么样 '%' ?

UPDATE A
SET Persona  = B.Persona
FROM dbo.TargetTable A 
INNER JOIN dbo.Library B ON title LIKE '%' + REPLACE([Keyword], ' ', '%') + '%'

相关问题