SQL 中的模式匹配技术可将字符串正确匹配到关键字但未获得正确结果
Pattern matching techniques in SQL to correctly match a string to a keyword but not getting the right results
我有一个 table (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.library
加入标题上的 dbo.TargetTable
以相应地更新 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' + '%'
你知道我该如何解决这个问题吗?有没有办法在使用 [ ] 时对关键字字符串进行精确匹配?
如何简单地将关键字中的嵌入空格替换为通配符 '%'
?
UPDATE A
SET Persona = B.Persona
FROM dbo.TargetTable A
INNER JOIN dbo.Library B ON title LIKE '%' + REPLACE([Keyword], ' ', '%') + '%'
我有一个 table (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.library
加入标题上的 dbo.TargetTable
以相应地更新 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' + '%'
你知道我该如何解决这个问题吗?有没有办法在使用 [ ] 时对关键字字符串进行精确匹配?
如何简单地将关键字中的嵌入空格替换为通配符 '%'
?
UPDATE A
SET Persona = B.Persona
FROM dbo.TargetTable A
INNER JOIN dbo.Library B ON title LIKE '%' + REPLACE([Keyword], ' ', '%') + '%'