SQL에서 VARCHAR 열을 여러 값으로 분할
문제:
값을 검색할 때 IN 절을 사용하는 VARCHAR 열에서 Oracle은 구분된 목록을 다음으로 변환합니다. 하위 쿼리가 개별 값과 일치하지 않도록 작은따옴표로 묶은 문자열.
해결책 1:
IN 절의 구분된 목록 값을 동일한 구분 기호로 묶습니다. VARCHAR 열에 사용됩니다. 예를 들어 AD_Ref_List.Value IN ('CO','VO')를 사용하는 대신 AD_Ref_List.Value IN (',' || 'CO' || ',' || 'VO' || ',')를 사용합니다. .
해결책 2(대체 Where 절):
일반 사용 REGEXP_SUBSTR 함수를 사용하는 표현식 기반 기술을 사용하여 지정된 수준의 구분된 목록에서 개별 값을 추출합니다. 예를 들어 다음 쿼리는 재귀를 사용하여 구분된 목록을 분할합니다.
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, '[^,]+') );
위 내용은 효율적인 SQL 쿼리를 위해 구분된 VARCHAR 열을 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!