Hi @Ruchita,
As @Viorel already pointed out , the PARSENAME() function can handle strings up to 128 chars.
Please try the following solution.
DECLARE @ProjectIDs VARCHAR(1024),
@DataVal VARCHAR(1024) = '52050!52051!52055!52052!52053!52058!52059!52056!52057!51400!51887!51765!50558!51647!50678!!51079!50664!51631!52049!51634!51995!51633!51756!51998!350004386!350004393!350004389!350004385@@5@@Yes@@DN_InUse';
SET @ProjectIDs = LEFT(@DataVal, CHARINDEX('@@', @DataVal) - 1);
-- test
SELECT @ProjectIDs AS ProjectIDs;
SQL Server 2022 and later solution is below.
SELECT value AS ProjectIDs
FROM STRING_SPLIT(REPLACE(@DataVal, '@@', '.'), '.',1)
WHERE ordinal = 1;