Това изглежда е свързано с грешка 19461687 и този предишен въпрос . Ако изхвърлите обобщената стойност от вашата заявка в 11gR2 или 12cR1, ще видите:
LISTAGG_OUTPUT
--------------------------------------------------------------------------------------------------
Typ=1 Len=25 CharacterSet=AL32UTF8: 0,41,0,52,0,34,0,30,0,30,0,31,2c,0,41,0,52,0,34,0,30,0,30,0,32
В SQL*Plus и SQL Developer действителната стойност се показва като:
LISTAGG_OUTPUT
----------------------------------------
A R 4 0 0 1, A R 4 0 0 2
и не можете да копирате стойността от SQL Developer. (В 12cR2 нулите вече не се появяват в дъмпа, стойността се показва без интервала и можете да я копирате, така че грешката изглежда е коригирана.)
Тези нулеви байтове изглежда карат Toad изобщо да не показва стойността, вероятно защото вижда първия нулев байт и го третира като терминатор на низ (или нещо по този начин все пак).
SQL Fiddle изглежда се справя с това, но db<>fiddle също изглежда има проблем с него и не връща нищо за цялата цигулка, когато тази заявка е налице.
Можете да предефинирате колоната на вашата таблица като varchar2
вместо nvarchar2
, но предполагам, че този тип данни е с причина, така че вероятно не е практично.
Така че можете вместо това да го направите като част от заявката:
SELECT LISTAGG(CAST(MOD_CODE AS VARCHAR2(12)),',')
WITHIN GROUP (ORDER BY MOD_CODE) LISTAGG_OUTPUT
FROM XOTEST_A
WHERE MOD_CODE IN ('AR4001','AR4002');
LISTAGG_OUTPUT
----------------------------------------
AR4001,AR4002
Или вижте дали корекцията за грешка 19461687 решава проблема за вас.