clear markdown compare help best fiddles feedback dbanow.uk a leap of faith?
clear markdown donate comments/suggestions/bugs a leap of faith? bible365 diddy dollings
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0. 1716912 fiddles created (23828 in the last week).

CREATE TABLE test (id INT, val NVARCHAR(255)); INSERT INTO test VALUES (1, N'ключ1 : значение1 / ключ2 : значение2 / ключ3 : значение3'), (2, N'ключ1 : значение4 / ключ2 : значение5 / ключ3 : значение6'), (3, N'ключ1 : значение7 / ключ2 : значение8 / ключ3 : значение9'); SELECT * FROM test;
id val
1 ключ1 : значение1 / ключ2 : значение2 / ключ3 : значение3
2 ключ1 : значение4 / ключ2 : значение5 / ключ3 : значение6
3 ключ1 : значение7 / ключ2 : значение8 / ключ3 : значение9
 hidden batch(es)


-- запрос в CTE - чисто для посмотреть и понять SELECT test.id, TRIM(SUBSTRING(splitted.value, 1, CHARINDEX(':', splitted.value) - 1)) [key], TRIM(SUBSTRING(splitted.value, 1 + CHARINDEX(':', splitted.value), LEN(splitted.value))) value FROM test CROSS APPLY STRING_SPLIT(test.val, '/') AS splitted
id key value
1 ключ1 значение1
1 ключ2 значение2
1 ключ3 значение3
2 ключ1 значение4
2 ключ2 значение5
2 ключ3 значение6
3 ключ1 значение7
3 ключ2 значение8
3 ключ3 значение9
 hidden batch(es)


WITH cte AS ( SELECT test.id, TRIM(SUBSTRING(splitted.value, 1, CHARINDEX(':', splitted.value) - 1)) [key], TRIM(SUBSTRING(splitted.value, 1 + CHARINDEX(':', splitted.value), LEN(splitted.value))) value FROM test CROSS APPLY STRING_SPLIT(test.val, '/') AS splitted ) SELECT id, MAX(CASE WHEN [key] = N'ключ1' THEN value END) [ключ1], MAX(CASE WHEN [key] = N'ключ2' THEN value END) [ключ2], MAX(CASE WHEN [key] = N'ключ3' THEN value END) [ключ3] FROM cte GROUP BY id
id ключ1 ключ2 ключ3
1 значение1 значение2 значение3
2 значение4 значение5 значение6
3 значение7 значение8 значение9
Warning: Null value is eliminated by an aggregate or other SET operation.
 hidden batch(es)