gpt4 book ai didi

sql - 检查名称是否包含多个标题

转载 作者:行者123 更新时间:2023-12-01 23:06:55 25 4
gpt4 key购买 nike

我想构建一个查询来确定一个名字中是否有多个标题。

Eg: Mr A Cohen Mrs B Cohen

标题列表:

('Mr', 'Mr.', 'Mrs', 'Mrs.', 'Miss', 'Miss.', 'Other', 'Ms', 'Ms.')

我可以使用以下方法检查第一个标题:

 IF (SUBSTRING(@Name, 0, CHARINDEX(' ', @Name)) NOT IN 
('Mr', 'Mr.', 'Mrs', 'Mrs.', 'Miss', 'Miss.', 'Other', 'Ms', 'Ms.'))

但我一直在检查第二个标题。

我可以使用下面的代码得到没有第一个标题的部分:

LTRIM(STUFF(@Name, CHARINDEX(Title, @Name), LEN(Title), ''))

这给我的输出为 'A Cohen Mrs B Cohen'。由此我想检查此输出中是否存在任何这些标题。

我知道我可以为每个标题使用多个 LIKE 运算符,但我正在寻找更简洁的东西。

最佳答案

使用JOIN 和派生表:

select t.name, count(*) as num_titles
from t join
(values ('Mr'), ('Mr.'), ('Mrs'), ('Mrs.'), ('Miss'), ('Miss.'), ('Other'), ('Ms'), ('Ms.')
) v(title)
on name like '%' + v.title + '%'
group by t.name
having count(*) >= 2;

请注意,这必然会找到“Mr.”、“Mrs.”、“Mrs.”、“Miss.”和“Ms.”的重复项。因为它们有 其他 匹配相同头衔的头衔(例如“先生”)。这似乎符合您指定的条件。

为防止这种情况,您可能需要在标题后留一个空格。如果是这样,请使用:

     on name like '%' + v.title + ' %'

关于sql - 检查名称是否包含多个标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55953157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com