Я не могу найти хороший способ сделать это, и из-за некоторых ограничений он должен быть закодирован без использования переменных, но я могу вызвать функцию.В любом случае мне нужно вернуть набор результатов из запроса Select, и одна из строк является строкой с разделителями.
Итак, он вернет что-то вроде:
id| Name | Message |
---------------------
1 | Some Name | 'Here is my | delimited | message'
И мне нужно, чтобы оно было
id| Name | Message1 | Message2 | Message3
------------------------------------------------------
1 | Some Name | 'Here is my' | 'delimited' | 'message'
Я думал о чем-то вроде Parsename('','|',1)
, где выможно передать разделитель вместо того, чтобы всегда быть точкой, но я не знаю, как лучше всего это сделать.
РЕДАКТИРОВАТЬ: я пробовал варианты этого, но, конечно, это очень запутанно.Может быть 4 или больше |
SELECT Field1,
Field2 AS Originalvalue,
--1
SUBSTRING(Field2,0,CHARINDEX('|',Field2)) AS Msg1,
--2
LEFT(SUBSTRING(Field2,CHARINDEX('|',Field2)+1 ,LEN(Field2)),CHARINDEX('|',SUBSTRING(Field2,CHARINDEX('|',Field2)+1 ,LEN(Field2)))-1)
AS ExtractedValue
FROM Table1 T1 JOIN Table2 T2
ON T1.Id = T2.Id
WHERE T1.Id = 12