尝试在sql中删除首字母之间的空格
我有一个包含人名的列,我需要将其提取以传递给另一个系统,但我需要删除空格,但仅从首字母之间删除 例如,我可能有尝试在sql中删除首字母之间的空格,sql,sql-server,Sql,Sql Server,我有一个包含人名的列,我需要将其提取以传递给另一个系统,但我需要删除空格,但仅从首字母之间删除 例如,我可能有 A B Bloggs先生我想要AB Bloggs先生或 ABC-Bloggs夫人我想要ABC-Bloggs夫人 由于表中有数百万条记录,我不知道有多少首字母,或者确实有没有首字母。我只知道前缀(Mr、Mrs等)将超过1个字符,姓氏也将超过1个字符。我试过使用trim,replace,charindex,但显然没有正确的组合。非常感谢您的帮助。不幸的是,SQL server不支持正则表达
A B Bloggs先生
我想要AB Bloggs先生
或
ABC-Bloggs夫人
我想要ABC-Bloggs夫人
由于表中有数百万条记录,我不知道有多少首字母,或者确实有没有首字母。我只知道前缀(Mr、Mrs等)将超过1个字符,姓氏也将超过1个字符。我试过使用
trim
,replace
,charindex
,但显然没有正确的组合。非常感谢您的帮助。不幸的是,SQL server不支持正则表达式。您有两个选择:
declare @test varchar(100)='Mrs A B C Bloggs'
select (substring (@test,0,charindex(' ',@test)))+' '+
replace(replace(replace(substring(@test,len((substring (@test,0,charindex(' ',@test))))+1,len(@test)),
(substring (@test,0,charindex(' ',@test))),''),reverse((substring (reverse(@test),0,charindex(' ',reverse(@test))))),''),' ','')
+' '+reverse((substring (reverse(@test),0,charindex(' ',reverse(@test)))))
您应该包括您正在使用的DBMS。正则表达式可能会支持这一点,但只有某些数据库支持它。您的数据集中是否有多个单词的姓氏(例如,
S van der Valk先生
)?@TimBiegeleisen-我只是在探索其他公式。例如,如果数据很简单,它可能可以转换为“用空字符串替换字符串中除第一个和最后一个空格以外的所有空格”@TimBiegeleisen-charindex此时运行此命令,将让您了解它的外观。如果删除所有单词之间的空格,我需要具体说明1个字符的首字母缩写