복붙노트

[SQL] 다른 부분에 하나는 유사하다 열 비교

SQL

다른 부분에 하나는 유사하다 열 비교

나는 하나 개의 컬럼이 다른 부분과 같은 경우 내가 볼 수있는 SELECT 문을 작성하는 것을 시도하고있다.

tblNames 
ID    FullName                   FirstName
1     Mr. John Doe, CEO          John
2     Mr. Jake Doe, Exec        Jake
3     Mrs. Betty Smith, Chair     Jill

쿼리가 반환해야합니다 :

3 | Mrs.Betty Smith, Chair | Jill

그러나 광산은 테이블의 모든 행을 반환합니다 :

SELECT ID, FullName, FirstName
FROM tblNames
WHERE '%' + FirstName + '%' not like Fullname

어떤 아이디어?

해결법

  1. ==============================

    1.이 같은 때문에, 어디 역 :

    이 같은 때문에, 어디 역 :

    Fullname not like '%' + FirstName + '%' 
    
  2. ==============================

    2.이 시도:

    이 시도:

    SELECT * FROM tblNames
    WHERE  ISNULL( CHARINDEX (FirstName , FullName),0) = 0
    

    이 계정에 와일드 카드를 취할 필요가 없습니다 같이 CHARINDEX는 LIKE 절보다 더 빨리 (더 성능이 좋은)입니다. 적은 수의 행과 위의 샘플 데이터는 성능 이점을 표시하지 않습니다,하지만 때 행의 수백만, CHARINDEX는 더 잘 수행한다.

  3. ==============================

    3.이것은 나를 위해 일한 :

    이것은 나를 위해 일한 :

    SELECT *
    FROM `table`
    WHERE `col1` NOT LIKE CONCAT('%', `col2`, '%')
    

    여기 발견 : http://www.edmondscommerce.co.uk/mysql/compare-two-columns-in-mysql/

    어떻게 든 그것은 단지 CONCAT 기능이 올바르게 작동 (?).

  4. ==============================

    4.WHERE 절에서 LIKE에 인수를 스위치 :

    WHERE 절에서 LIKE에 인수를 스위치 :

    SELECT ID, FullName, FirstName
    FROM tblNames
    WHERE Fullname not like '%' + FirstName + '%'
    

    와일드 카드는 두 번째 인수해야합니다.

  5. ==============================

    5.사용하는 경우 + 오라클은 수를 예상했다. 문자열의 경우, 샘플을 아래에 사용하십시오 :

    사용하는 경우 + 오라클은 수를 예상했다. 문자열의 경우, 샘플을 아래에 사용하십시오 :

    SELECT ID, FullName, FirstName
    FROM tblNames
    WHERE FullName like '%' || FirstName||'%'
    

    다른 테이블의 컬럼에 테이블의 하나 개의 컬럼을 비교하려면 다음을 수행하십시오

    select a.*,table_2_col_1, table_2_col_2 from (select table_1_col_1, table_1_col_2 from table_1 where
    )  a, table_2 where   table_1_col_1 like '%' || table_2_col_1 ||'%'
    
  6. ==============================

    6.당신은 아마 당신의 경우에 주위의 순서를 전환 할 제외하면, 확인을 본다 :

    당신은 아마 당신의 경우에 주위의 순서를 전환 할 제외하면, 확인을 본다 :

    WHERE Fullname not like '%' + FirstName + '%'
    
  7. ==============================

    7.괄호는 문제를 해결 한 것이다.

    괄호는 문제를 해결 한 것이다.

    SELECT ID, FullName, FirstName
    FROM tblNames
    WHERE ('%' + FirstName + '%') not like Fullname
    
  8. from https://stackoverflow.com/questions/4700550/compare-columns-where-one-is-similar-to-part-of-another by cc-by-sa and MIT license