我有一個員工表,其中的示例數據是這樣的。我使用SQL Server 2008在SQL Server中使用字符串連接與parsename函數
CREATE TABLE employee (name nvarchar(255))
insert into employee (name) values ('Alex,AlexMartin'),
('John,John'),
('Mayr,Mayr'),
('Shel,Sheila'),
('corolla,corolla,corolla3'),
('Mary4,Mary,Mary'),
('Justin,Justin,Justin'),
('Sara,Sara,Sara,Sara'),
('clarence,clarence,clarence458,clarence,clarence'),
('fiesta,fiesta,fiesta,fiesta,fiesta'),
('scorpio1,scorpio,scorpio,scorpio4,scorpio')
我要刪除一個值,如果字符串中的所有值都相同的例子:John,John
應該由「約翰」來代替。如果字符串中的所有名稱與Shel,Sheila
不相同,則應保留這兩個值。 對此,我正在使用 update employee set name=(select PARSENAME(REPLACE(name, ',', '.'), 2)) where (select PARSENAME(REPLACE(name, ',', '.'), 2)) like (select PARSENAME(REPLACE(name, ',', '.'), 1))
,但它正在將Mary4,Mary,Mary
更改爲Mary
。我嘗試了5個,4個和3個名字的組合,但沒有用。實際上,對於這五個名字,這個代碼根本不起作用。有沒有任何有效的方法來做到這一點?
它實際上給我錯誤'無效的長度參數傳遞給左或SUBSTRING函數.' ...我正在使用sql服務器..我應該改變語法? – alex
@Yuck ..感謝很多它的工作,在第一次當我剛剛用'CHARINDEX(',',Name)'替換了CHARINDEX(Name,',')'時,我正在編輯你的答案:) – alex