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

Oracle:Penggabungan String terlalu panjang

Anda dapat menggunakan COLLECT() fungsi untuk menggabungkan string ke dalam koleksi dan kemudian menggunakan fungsi Buatan Pengguna untuk menggabungkan string:

Pengaturan Oracle :

CREATE TYPE stringlist IS TABLE OF VARCHAR2(4000);
/

CREATE FUNCTION concat_List(
  strings IN stringlist,
  delim   IN VARCHAR2 DEFAULT ','
) RETURN CLOB DETERMINISTIC
IS
  value CLOB;
  i     PLS_INTEGER;
BEGIN
  IF strings IS NULL THEN
    RETURN NULL;
  END IF;
  value := EMPTY_CLOB();
  IF strings IS NOT EMPTY THEN
    i := strings.FIRST;
    LOOP
      IF i > strings.FIRST AND delim IS NOT NULL THEN
        value := value || delim;
      END IF;
      value := value || strings(i);
      EXIT WHEN i = strings.LAST;
      i := strings.NEXT(i);
    END LOOP;
  END IF;
  RETURN value;
END;
/

Kueri :

SELECT Iav.Item_Id AS Attr_Item_Id,
       CONCAT_LIST(
         CAST(
           COLLECT(
             La.Attribute_Name || '|~|' || Lav.Attribute_Value ||' '|| Lau.Attribute_Uom
             ORDER BY ICA.DISP_SEQ,LA.ATTRIBUTE_NAME
           )
           AS stringlist
         ),
         '}~}'
       ) AS ATTR
FROM   your_table
GROUP BY iav.item_id;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah hex menjadi string

  2. Bagaimana saya bisa membuat cx-Oracle mengikat hasil kueri ke kamus daripada Tuple?

  3. ORA-12519 TNS:tidak ditemukan penangan layanan yang sesuai

  4. Mengapa fungsi agregat tidak diizinkan di klausa where

  5. Pengembang SQL 4.1.3 Dirilis