MSSQL Как менять местами записи в таблице
Есть таблица с именами, где имена записываются так: "John, Smith", мне надо его превратить в "Smith John"
SELECT (REPLACE(Name, ',', ' ')) AS NewName
FROM Employees
Так я вывел Имя Фамилия без запятой, но ни как не могу понять как их местами поменять. Подскажите как это можно реализовать или где копать
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Вот так посмотрите
SELECT
SubString(NAME, CHARINDEX( ',', NAME) + 1, LEN(NAME)) + ' ' + SubString(NAME, 0, CHARINDEX( ',', NAME)) AS NewName
FROM
(select 'Aziz, Umarov' AS NAME) AS t;
Автор решения: Yitzhak Khabinsky
→ Ссылка
Попробуйте следующий подход, используя встроенную функцию PARSENAME().
SQL
-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, fullName VARCHAR(100));
INSERT INTO @tbl (fullName) VALUES
('John, Smith'),
('Martha, Pollack');
-- DDL and sample data population, end
;WITH rs AS
(
SELECT *, REPLACE(fullName, ',', '.') AS NewFullName
FROM @tbl
)
SELECT ID, fullName AS [Before]
, CONCAT(PARSENAME(NewFullName, 1), SPACE(1), PARSENAME(NewFullName, 2)) AS [After]
FROM rs;
результат
+----+-----------------+-----------------+
| ID | Before | After |
+----+-----------------+-----------------+
| 1 | John, Smith | Smith John |
| 2 | Martha, Pollack | Pollack Martha |
+----+-----------------+-----------------+