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

Oracle:Kết nối chuỗi quá dài

Bạn có thể sử dụng COLLECT() chức năng để tổng hợp các chuỗi thành một tập hợp và sau đó sử dụng hàm do Người dùng xác định để nối các chuỗi:

Thiết lập 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;
/

Truy vấn :

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. Cài đặt các biểu mẫu và báo cáo Oracle 11g Release 2

  2. Có cách nào để khắc phục DSRA9010E 'setReadOnly' không được hỗ trợ trên ngoại lệ WebSphere không?

  3. Visual Studio 2012 Load testing có thể chụp bộ đếm hiệu suất của máy chủ Linux và cơ sở dữ liệu Oracle không?

  4. Có thể chạy tập lệnh SQLPLUS trên tệp được mã hóa là UTF-8 với BOM không

  5. Hiệu suất chọn Hibernate kém so với chạy trực tiếp - gỡ lỗi như thế nào?