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

Làm cách nào để chia một cột varchar thành nhiều giá trị trong SQL?

Bọc giá trị trong dấu phân cách bạn đang sử dụng trong danh sách được phân tách và sau đó kiểm tra xem nó có phải là một chuỗi con của danh sách được phân tách hay không (cũng với các dấu phân cách được bao quanh nó):

SELECT r.Value
FROM   AD_Ref_List r
       INNER JOIN xx_insert x
       ON ( ',' || x.XX_DocAction_Next || ',' LIKE '%,' || r.value || ',%' )
WHERE  r.AD_Reference_ID = 1000448
AND    x.xx_insert_id    = 1000283;

tôi phải giữ logic trong đó Điều khoản

Thực sự, không. Truy vấn trên sẽ hiệu quả hơn nhiều.

Nhưng nếu bạn phải sau đó:

SELECT Value
FROM   AD_Ref_List
WHERE  AD_Reference_ID = 1000448
AND    value IN (
  SELECT REGEXP_SUBSTR( XX_DocAction_Next, '[^,]+', 1, LEVEL )
  FROM   xx_insert
  WHERE  xx_insert_id    = 1000283
  CONNECT BY LEVEL <= REGEXP_COUNT( XX_DocAction_Next, '[^,]+' )
);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Danh sách các vùng lãnh thổ được Cơ sở dữ liệu Oracle hỗ trợ

  2. Cách cài đặt Oracle trên máy Mac

  3. Cài đặt Oracle SQL Developer 19.1 trên Mac OS với JDK 8

  4. Sự khác biệt giữa LockModeType Jpa

  5. Oracle.DataAccess không có sẵn để lựa chọn trong Visual Studio 2013