Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

ORACLE SQL LISTAGG không trả về kết quả mong đợi

Điều này dường như liên quan đến lỗi 19461687 và câu hỏi trước này . Nếu bạn kết xuất giá trị tổng hợp từ truy vấn của mình ở dạng 11gR2 hoặc 12cR1, bạn sẽ thấy:

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

Trong SQL * Plus và SQL Developer, giá trị thực được hiển thị là:

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

và bạn không thể sao chép giá trị từ SQL Developer. (Trong 12cR2, các số 0 không còn xuất hiện trong kết xuất nữa, giá trị được hiển thị mà không có khoảng cách và bạn có thể sao chép nó, do đó, lỗi này dường như đã được sửa.)

Những byte null đó dường như đang khiến Toad không hiển thị giá trị nào cả, có lẽ vì nó nhìn thấy byte rỗng đầu tiên và coi nó như một dấu chấm dứt chuỗi (hoặc một cái gì đó dọc theo những dòng đó).

SQL Fiddle dường như đối phó với điều này, nhưng db <> fiddle dường như cũng có vấn đề với nó và không trả về bất kỳ thứ gì cho toàn bộ fiddle khi truy vấn đó xuất hiện.

Bạn có thể xác định lại cột trong bảng của mình là varchar2 thay vì nvarchar2 , nhưng tôi cho rằng đó là kiểu dữ liệu vì một lý do nào đó, vì vậy điều đó có thể không thực tế.

Vì vậy, bạn có thể truyền nó như một phần của truy vấn thay thế:

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

Hoặc xem liệu bản vá lỗi 19461687 có khắc phục được sự cố cho bạn hay không.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để chuyển đổi SDO_GEOMTRY trong GeoJSON

  2. Tại sao tôi nhận được một giao dịch đang mở khi chỉ chọn từ Chế độ xem cơ sở dữ liệu?

  3. ORACLE Chèn hiệu suất trên các bảng được lập chỉ mục

  4. .NET / Oracle:Cách thực thi một tập lệnh với các câu lệnh DDL theo chương trình

  5. Oracle:Cập nhật cột bảng bằng ROWNUM kết hợp với mệnh đề ORDER BY