Как выполнить Split и Stringbuilding в SQL?

Я помощник по SQL, провожу большую часть своего времени в Powershell. Поэтому для целей этого я буду выражать себя таким образом. По сути, у меня есть столбец FullName, который содержит FirstName LastNameи я хочу, чтобы это реструктурировалось в LastName, Firstname в SELECT запрос.

Если бы я не был достаточно ясен, в Powershell я бы сделал это:

$string = "John Smith"
$split = $string.Split(' ')
$builder = "$($split[0]), $($split[1])"

Как это сделать в SQL?

2 ответа

Решение

Поскольку ваши данные хороши и последовательны, вы можете использовать комбинацию CHARINDEX а также SUBSTRING функции:

SELECT
    SUBSTRING(FullName, 0, CHARINDEX(' ', FullName)) AS FirstName,
    SUBSTRING(FullName, CHARINDEX(' ', FullName)+1, LEN(FullName)) AS LastName
FROM NamesTable

Теперь, если вы хотите объединить их, просто используйте конкатенацию строк:

SELECT
    SUBSTRING(FullName, CHARINDEX(' ', FullName)+1, LEN(FullName))
    + ', ' +
    SUBSTRING(FullName, 0, CHARINDEX(' ', FullName))
FROM NamesTable

Sql Server 2016. https://msdn.microsoft.com/en-us/library/mt684588.aspx

DECLARE @tags NVARCHAR(400) = 'clothing,road,,touring,bike'  

SELECT value  
FROM STRING_SPLIT(@tags, ',')  
WHERE RTRIM(value) <> ''; 
Другие вопросы по тегам