DECLARE @CoolTable AS TABLE (id int PRIMARY KEY IDENTITY(1,1), [name] nvarchar(100))
INSERT INTO @CoolTable values
('Man, Jo (123546)'),
('Vo, Tony (5533)'),
('Beaty, Nancy (7766)'),
(',badData1 (100)'),
('badData2 (101)'),
(',badData3')
SELECT
CASE WHEN CHARINDEX(',', [name]) > 0 AND CHARINDEX('(', [name]) > 0 THEN
RTRIM(LTRIM(SUBSTRING([name], CHARINDEX(',', [name])+1, CHARINDEX('(', [name]) - CHARINDEX(',', [name]) - 1)))
+ ' '
+ SUBSTRING([name], 0, CHARINDEX(',', [name]))
+ ' '
+ LTRIM(SUBSTRING([name], CHARINDEX('(', [name]) - 1, 100))
ELSE
[name]
END AS [NewName]
FROM @CoolTable
Вывод:
NewName
---------------------------
Jo Man (123546)
Tony Vo (5533)
Nancy Beaty (7766)
badData1 (100)
badData2 (101)
,badData3
Меня этот код не радует. И по мар ie Кондо, я должен его удалить. Если бы это зависело от меня, я бы посмотрел, как улучшить процесс вставки исходных данных (например, получить в 3 разных полях).