> 데이터 베이스 > MySQL 튜토리얼 > SQL에서 쉼표로 구분된 VARCHAR 열 값을 분할하는 방법은 무엇입니까?

SQL에서 쉼표로 구분된 VARCHAR 열 값을 분할하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-16 14:37:17
원래의
241명이 탐색했습니다.

How to Split Comma-Separated VARCHAR Column Values in SQL?

SQL에서 VARCHAR 열 값 분할

SQL에서 VARCHAR 데이터 유형은 가변 길이 문자열을 저장합니다. VARCHAR 열을 처리할 때 열 값을 여러 개별 값으로 분할해야 할 수도 있습니다.

다음과 같은 SQL SELECT 문이 있다고 가정해 보겠습니다.

SELECT 
  AD_Ref_List.Value
FROM AD_Ref_List
WHERE AD_Ref_List.AD_Reference_ID= 1000448
로그인 후 복사

이 문은 모든 값을 반환합니다. AD_Reference_ID 열이 1000448인 AD_Ref_List 테이블의 값 열 값. 결과는 다음과 같습니다. this:

Value
CO,VO

이 결과에서 값 열에는 쉼표로 구분된 값 목록이 포함됩니다. 결과를 추가로 필터링하려면 다음과 같이 값을 개별 행으로 분할할 수 있습니다.

Value
CO
VO

이를 달성하는 한 가지 방법은 다음과 같이 IN 연산자를 사용하는 것입니다.

SELECT 
  AD_Ref_List.Value
FROM AD_Ref_List
WHERE AD_Ref_List.AD_Reference_ID= 1000448
AND AD_Ref_List.Value IN
  (SELECT xx_insert.XX_DocAction_Next
  FROM xx_insert
  WHERE xx_insert_id = 1000283
  )
;
로그인 후 복사

그러나 Oracle은 값 목록을 개별 값이 아닌 단일 문자열로 처리하므로 이 쿼리는 행을 반환하지 않을 수 있습니다. 이 문제를 해결하려면 다음 기술을 사용할 수 있습니다.

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;
로그인 후 복사

이 쿼리는 LIKE 연산자를 사용하여 AD_Ref_List 테이블의 값이 xx_insert 테이블 값 목록의 하위 문자열인지 확인합니다. 그러면 값 열의 각 값이 별도의 행으로 표시되어 원하는 결과가 반환됩니다.

위 내용은 SQL에서 쉼표로 구분된 VARCHAR 열 값을 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿