Oto składnia, której możesz chcieć użyć dla swoich wymagań:
Składnia:
DBMS_LOB.SUBSTR (lob_loc, amount, offset)
Parameter Description
lob_loc: Locator for the LOB to be read i.e CLOB column name.
amount: Number of bytes (for BLOBs) or characters (for CLOBs) to be read.
offset: Offset in bytes (for BLOBs) or characters (for CLOBs) from the start of the LOB (origin: 1).
Twoje ostateczne zapytanie powinno wyglądać mniej więcej tak,
SELECT
Test_Case_Name,
DBMS_LOB.SUBSTR(Test_Case_Description,2000,1) as Test_Case_Description,
Test_Case_Status,
CASE WHEN Test_Case_Status = 'FAILED' THEN
LISTAGG(LN.LN_BUG_ID,', ') WITHIN GROUP(ORDER BY LN.LN_BUG_ID)
END AS Defect_ID
FROM Test LEFT JOIN LINK LN ON
LN.LN_ENTITY_ID=Test.TS_TEST_ID
GROUP BY
Test_Case_Name,
Test_Case_Description,
Test_Case_Status
Ponieważ obawiasz się, że nie stracisz danych po 4000 znaków, sugeruję, aby podzielić kolumnę i wyświetlić ją jak poniżej.
SELECT
Test_Case_Name,
DBMS_LOB.SUBSTR(Test_Case_Description,4000,1) as Test_Case_Description1,
DBMS_LOB.SUBSTR(Test_Case_Description,8000,4001) as Test_Case_Description2
Test_Case_Status,
CASE WHEN Test_Case_Status = 'FAILED' THEN
LISTAGG(LN.LN_BUG_ID,', ') WITHIN GROUP(ORDER BY LN.LN_BUG_ID)
END AS Defect_ID
FROM Test LEFT JOIN LINK LN ON
LN.LN_ENTITY_ID=Test.TS_TEST_ID
GROUP BY
Test_Case_Name,
Test_Case_Description1,
Test_Case_Description2,
Test_Case_Status