问题描述
我有一个名为Name的表,其员工姓名格式为Lastname,Firstname
。我将它们切换到了Firstname Lastname
。
但是,诸如“ Zorro”和“ Jessia Kim”之类的名称并未受到此影响,因为它们没有逗号。相反,我需要加一个“!”在他们面前,以便管理员稍后可以更改它们。有什么办法可以添加“!” SELECT语句中的那些名称?
这是我目前拥有的:
SELECT SUBSTRING(Name,CHARINDEX(',',Name) + 1,LEN(Name)) + ' ' +
REPLACE(SUBSTRING(Name,1,Name)),'') AS NewName
FROM Employees
解决方法
我认为您想要一个case
表达式:
select
case when charindex(',',name) > 0
then substring(name,charindex(',name) + 1,len(name))
+ ' '
+ substring(name,1,name) - 1)
else '!' + name
end as newname
from employees
基本上,这会检查name
是否包含逗号。如果确实如此,那么它将按照您的预期切换两个部分。如果不是,那么它将!
连接在字符串的开头。
请注意,我优化了一些用于反转名字和姓氏的逻辑-我认为您不需要replace()
。
在这里
SELECT IIF(CHARINDEX(',Name)<=0,'!'+Name,SUBSTRING(Name,CHARINDEX(',Name) + 1,LEN(Name)) + ' ' +
REPLACE(SUBSTRING(Name,Name)),'')
)