Oracle
 sql >> база данни >  >> RDS >> Oracle

Свързване на стойности от множество колони в Oracle

SQL Fiddle

Настройка на схема на Oracle 11g R2 :

CREATE TABLE test (col1, col2, col3, col4, col5 ) КАТО SELECT 1, 'A', 'B', 'C', 'D' FROM DUALUNION ALL SELECT 2, 'A', ' B', 'C', NULL FROM DUALUNION ALL SELECT 3, 'C', 'A', NULL, NULL FROM DUALUNION ALL SELECT 4, 'D', 'A', 'C', NULL FROM DUALUNION ALL SELECT 5, NULL, NULL, NULL, NULL FROM DUALUNION ALL SELECT 6, NULL, NULL, NULL, 'A' FROM DUALUNION ALL SELECT 7, 'B', NULL, NULL, 'A' FROM DUALUNION ALL SELECT 8, NULL, 'C' , NULL, 'A' FROM DUAL; 

Заявка 1 :

Ако няма NULL стойности между други стойности (ще въведе множество запетаи в редове 7 и 8):

SELECT col1, TRIM( ',' FROM col2||','||col3||','||col4||','||col5 ) AS col2FROM тест 

Резултати :

<предварителен код>| COL1 | COL2 ||------|---------|| 1 | A,B,C,D || 2 | A,B,C || 3 | C,A || 4 | D,A,C || 5 | (нула) || 6 | А || 7 | B,,,A || 8 | C,,A |

Последните две заявки ще работят за всички примери:

Заявка 2 :

SELECT col1, TRIM( ',' FROM col2 || NVL2( col3, ','||col3, NULL ) || NVL2( col4, ','||col4, NULL ) || NVL2( col5, ','||col5, NULL ) ) AS col2FROM тест 

Резултати :

<предварителен код>| COL1 | COL2 ||------|---------|| 1 | A,B,C,D || 2 | A,B,C || 3 | C,A || 4 | D,A,C || 5 | (нула) || 6 | А || 7 | B,A || 8 | C,A |

Заявка 3 :

SELECT col1, REGEXP_REPLACE( col2||','||col3||','||col4||','||col5, '(^|,),+|,+($ )', '\1' ) AS col2FROM тест 

Резултати :

<предварителен код>| COL1 | COL2 ||------|---------|| 1 | A,B,C,D || 2 | A,B,C || 3 | C,A, || 4 | D,A,C || 5 | (нула) || 6 | А || 7 | B,A || 8 | C,A |

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Настройки на Django oracle db

  2. Windows не може да намери „http:/.127.0.0.1:%HTTPPORT%/apex/f?p=4950“. Уверете се, че сте въвели правилно името и опитайте отново

  3. Какво означава символът SQL Select || означава?

  4. Уникално ограничение на Oracle и уникален индекс

  5. Принудително намаляване на глобалната таблица на Oracle