I am assuming the following sample data:
CREATE TABLE MyGroupTasks ([GROUP_TASK_IDS] VARCHAR(100) PRIMARY KEY)
INSERT INTO dbo.MyGroupTasks (GROUP_TASK_IDS)
VALUES ('{123}={456}'),('{a}={bc}')
In this case, I have added just AS owner in your query to make it valid:
SELECT [taskId]= LEFT(s.owner, ca.pos - 1),
[owner] = SUBSTRING(s.owner, ca.pos + 1, 888000)
FROM (SELECT [GROUP_TASK_IDS] AS owner from MyGroupTasks) s
CROSS APPLY (VALUES(CHARINDEX('=', s.owner))) ca(pos)
And it produces the following results:
taskId owner
------------------------------ ------------------------------
{123} {456}
{a} {bc}
(2 rows affected)
If you wanted these results:
taskId owner
------------------------------ ------------------------------
123 456
a bc
(2 rows affected)
Change your query this way:
SELECT [taskId]= SUBSTRING(s.owner, 2, ca.pos - 3),
[owner] = SUBSTRING(s.owner, ca.pos + 2, LEN(s.owner)-ca.pos-2)
FROM (SELECT [GROUP_TASK_IDS] AS owner from MyGroupTasks) s
CROSS APPLY (VALUES(CHARINDEX('=', s.owner))) ca(pos)
Later edit
CROSS APPLY is normally used to execute another query based on some criteria from the tables which are used before. See https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/ for an introduction in the typical usage of this clause. However, in the CROSS APPLY you can also use a VALUES clause (instead of a SELECT subquery). ca(pos) are the aliases assigned to the subquery and to the resulting column.
A similar query (with a more usual syntax) would be:
SELECT [taskId]= LEFT(s.owner, ca.pos - 1),
[owner] = SUBSTRING(s.owner, ca.pos + 1, 888000)
FROM (SELECT [GROUP_TASK_IDS] AS owner from MyGroupTasks) s
CROSS APPLY (SELECT CHARINDEX('=', s.owner) AS pos) ca
Another way to write this (even more usual) would be:
SELECT LEFT(s.owner, s.pos - 1) AS taskId,
SUBSTRING(s.owner, s.pos + 1, 888000) AS owner
FROM (
SELECT GROUP_TASK_IDS AS owner,
CHARINDEX('=', GROUP_TASK_IDS) AS pos
FROM MyGroupTasks
) s