>  기사  >  데이터 베이스  >  SQL: INSTR, LIKE 또는 CONCAT에서 LIKE 조인을 수행하는 방법은 무엇입니까?

SQL: INSTR, LIKE 또는 CONCAT에서 LIKE 조인을 수행하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-31 10:27:01559검색

How to Perform a LIKE Join in SQL: INSTR, LIKE, or CONCAT?

SQL에서 LIKE 조인 수행

조인을 사용하여 두 테이블 간의 값을 일치시킬 때 한 테이블의 열이 일치하는 경우가 있을 수 있습니다. 다른 테이블의 열 부분과 일치해야 합니다. 이는 조인 조건에서 LIKE 연산자를 사용하여 수행되는 경우가 많습니다.

테이블 A와 테이블 B라는 두 개의 테이블이 있고 테이블 A의 A열이 "like"인 조건으로 조인하려고 한다고 가정해 보겠습니다. 이는 테이블 B의 컬럼 B입니다. 이는 일치 항목에 컬럼 B의 전체 값이나 그 앞이나 뒤의 문자가 포함될 수 있음을 의미합니다.

INSTR 사용:

한 가지 방법은 다음을 사용하는 것입니다. 조인 조건의 INSTR() 함수:

<code class="sql">SELECT *
FROM TABLE A
JOIN TABLE B ON INSTR(B.columnB, A.columnA) > 0</code>

LIKE 사용:

또 다른 옵션은 와일드카드와 함께 LIKE 연산자를 사용하는 것입니다:

<code class="sql">SELECT *
FROM TABLE A
JOIN TABLE B ON B.columnB LIKE '%'+ A.columnA +'%'</code>

CONCAT과 함께 LIKE 사용:

CONCAT() 함수를 사용하여 와일드카드 기호를 열 값과 연결할 수도 있습니다:

<code class="sql">SELECT *
FROM TABLE A
JOIN TABLE B ON B.columnB LIKE CONCAT('%', A.columnA ,'%')</code>

대문자 변환:

대소문자를 구분하지 않는 일치를 보장하려면 비교하기 전에 열 값을 대문자로 변환하는 것이 좋습니다.

<code class="sql">SELECT *
FROM (SELECT UPPER(A.columnA) 'ua' FROM TABLE A) A
JOIN (SELECT UPPER(B.columnB) 'ub' FROM TABLE B) B ON INSTR(B.ub, A.ua) > 0</code>

효율성 고려 사항:

이러한 방법의 효율성은 특정 데이터베이스 및 테이블 구조에 따라 달라질 수 있습니다. 가장 최적의 접근 방식을 결정하려면 EXPLAIN 계획 출력을 확인하는 것이 좋습니다.

ANSI와 비ANSI JOIN 비교:

ANSI JOIN은 표준화된 구문을 따르는 반면, 비ANSI JOIN은 표준 구문을 따릅니다. ANSI JOIN은 보다 전통적인 구문을 사용합니다. 이 경우 JOIN 절은 ANSI가 아닌 JOIN의 WHERE 절과 동일합니다.

<code class="sql">SELECT *
FROM TABLE A,
     TABLE B
WHERE INSTR(B.columnB, A.columnA) > 0</code>

ANSI JOIN을 사용하면 WHERE 절의 필터 조건에서 조인 조건을 분리할 수 있는 이점이 있습니다.

위 내용은 SQL: INSTR, LIKE 또는 CONCAT에서 LIKE 조인을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.