Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORACLE SQL LISTAGG tidak mengembalikan hasil yang diharapkan

Ini tampaknya terkait dengan bug 19461687, dan pertanyaan sebelumnya . Jika Anda membuang nilai agregat dari kueri Anda di 11gR2 atau 12cR1 Anda melihat:

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

Dalam SQL*Plus dan SQL Developer, nilai aktual ditampilkan sebagai:

LISTAGG_OUTPUT
----------------------------------------
 A R 4 0 0 1, A R 4 0 0 2

dan Anda tidak dapat menyalin nilai dari SQL Developer. (Dalam 12cR2 nol tidak lagi muncul di dump, nilai ditampilkan tanpa spasi, dan Anda dapat menyalinnya, sehingga bug tampaknya telah diperbaiki.)

Byte null tersebut tampaknya menyebabkan Toad tidak menampilkan nilai sama sekali, mungkin karena ia melihat byte null pertama dan memperlakukannya sebagai terminator string (atau sesuatu seperti itu).

SQL Fiddle tampaknya mengatasi ini, tetapi db<>fiddle juga tampaknya memiliki masalah dengannya, dan tidak mengembalikan apa pun untuk keseluruhan biola ketika kueri itu ada.

Anda dapat mendefinisikan ulang kolom tabel Anda sebagai varchar2 bukannya nvarchar2 , tapi saya berasumsi itu adalah tipe data karena suatu alasan, jadi itu mungkin tidak praktis.

Jadi, Anda bisa memasukkannya sebagai bagian dari kueri:

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

Atau lihat apakah patch untuk bug 19461687 memperbaiki masalah Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penskalaan nilai desimal menghasilkan pemotongan data melalui ODBC

  2. Cara menginstal cx_Oracle di El Capitan

  3. Menghubungkan Oracle ke PostgreSQL

  4. Tabel kueri dari database ORACLE lain

  5. Bagaimana menemukan dependensi di dalam paket Oracle?