Sql 条件匹配与替换

Sql 条件匹配与替换,sql,sql-server,sql-server-2016,Sql,Sql Server,Sql Server 2016,我正在尝试从名称中替换标题,如下所示。但它们的格式并不总是相同的 样本数据 AndrewMr Simon Dr AnjelaMiss Robert 我在一个单独的临时表中有一个标题列表 create table #T(Title varchar(10)) insert into #T values ('Mr'),('Mrs'),('Ms'),('Miss'),('Mstr'),('Master'),('Dr'),('Captain'),('Hon'),('Prof'),('Lady'),

我正在尝试从名称中替换标题,如下所示。但它们的格式并不总是相同的

样本数据

AndrewMr
Simon Dr
AnjelaMiss
Robert
我在一个单独的临时表中有一个标题列表

create table #T(Title varchar(10))
insert into #T
values ('Mr'),('Mrs'),('Ms'),('Miss'),('Mstr'),('Master'),('Dr'),('Captain'),('Hon'),('Prof'),('Lady'),
        ('Lord'),('Sir'),('Rev') 
我试图做的是删除名称中出现的任何匹配标题

设法将其链接,但不确定如何执行替换

select  R.[First Name], right(R.[First Name],7), T.Title
from Temp R
     left outer join #T T on right(R.[First Name],7) like '%'+ t.Title + '%'

在你所有的例子中,比赛只在最后进行。因此:

select R.[First Name],
       coalesce(rtrim(left(R.[First Name],
                           len(R.[First Name]) - len(t.Title)
                          )
                     ),
                R.[First Name]
               )
from Temp R left join
      #T T
      on R.[First Name] like '%' + t.Title;

是一个数据库管理员。

希望此代码对您的情况适用:

选择*,替换1.NAME,T2.TITLE, 从@TAB T1开始
T1.NAME上的左连接T T2,如“%”+REPLACET2.TITLE,T1.NAME,++“%”

不应该是R[名字]如“%”+T.TITLE吗?即使添加缺少的方括号,似乎也不起作用。一些语法错误,它说left函数需要2个参数。根据sql server文档,应该是coalesclefr.[First Name],lenR.[First Name]-lent.Title,R.[First Name]。不过,我不确定rtrim调用的目的。嗨,戈登,出于某种原因,它与任何调用都不匹配。请参阅@user12073359。谢谢你摆好小提琴。我修正了代码。这不是在最后做匹配,所以会有问题。这也将匹配Mrs和Mr