我有一个包含名字和姓氏的表格,如下所示
First_Name LAST_NAME
John Milano
Garry Sanders
Barr, Jerome P
Venti, Louis
我需要更正Last_name列中具有完整名称的一些行。我想要的输出是: -
First_Name LAST_NAME
John Milano
Garry Sanders
Jerome Barr
Louis Venti
提前致谢!
答案 0 :(得分:2)
这会让你接近,有一些警告:1)有些名字有两个字 - " Mary Ann"等等。所以,你可能想保留这些。 2)您只想更改LAST_NAME列包含逗号的行。
UPDATE MyTable
SET First_Name = LTRIM(SUBSTRING(LAST_NAME, CHARINDEX(',', LAST_NAME) + 1, 100)),
LAST_NAME = LTRIM(RTRIM(SUBSTRING(@name, 0, CHARINDEX(',', @name))))
WHERE CHARINDEX(',', LAST_NAME) > 0
所以,你将拥有"杰罗姆P"作为第一个名字仍然。如果要将名字限制为单个单词,则必须多做一些。这应该有效:
UPDATE MyTable
SET First_Name = LTRIM(RTRIM(SUBSTRING(@name, 0, CHARINDEX(' ', @name))))
WHERE CHARINDEX(' ', First_Name) > 0
答案 1 :(得分:1)
您可以使用包含CHARINDEX
和LEFT
select
First_Name
,case
when charindex(',',LAST_NAME) > 1 then left(LAST_NAME,charindex(',',LAST_NAME) - 1)
else LAST_NAME
end as LAST_NAME
From YourTable
示例强>
declare @var varchar(64) = 'Barr, Jerome P'
select
case
when charindex(',',@var) > 1 then left(@var,charindex(',',@var) - 1)
else @var
end