SQL 쿼리처럼 사용할 수 없는 경우에만 정확하게 일치 존재합니까?

StackOverflow https://stackoverflow.com/questions/75819

  •  09-06-2019
  •  | 
  •  

문제

나는 데 문제가 쿼리가 현재 사용하는

LEFT JOIN weblog_data AS pwd 
  ON (pwd.field_id_41 != '' 
  AND pwd.field_id_41 LIKE CONCAT('%', ewd.field_id_32, '%'))

그러나 나는 내가 그것을 필요로만 사용하는 경우에 없을 정확히 일치 처음이다.무슨 일이 일어나는 쿼리를 두 번 담그는 사용으로 인해 LIKE, 는 경우,그래서 그에 대한 테스트와 정확히 일치 처음 그것을 피할 것 두 번 담그는 문제입니다.할 수 있는 사람이 저에게 제공한 어떠한 추가 지침?

도움이 되었습니까?

해결책

그것은 당신 같은 소리에 가입하려면 테이블 별칭으로 pwd 및 ewd 에 조각을 기반으로 처음에 정확히 일치,그리고 실패하는 경우,그 다음에 다음과 같이 비교 이제 수 있습니다.

이것을 보십시오:

LEFT JOIN weblog_data AS pwd1 ON (pwd.field_id_41 != '' AND pwd.field_id_41 = ewd.field_id_32)
LEFT JOIN weblog_data AS pwd2 ON (pwd.field_id_41 != '' AND pwd.field_id_41 LIKE CONCAT('%', ewd.field_id_32, '%'))

그런 다음에서,당신의 선택 절이 같은 것을 사용:

select
  isnull(pwd1.field, pwd2.field)

그러나,당신은 처리할 수 있는 필드에 null 을 pwd,는 것이 문제를 일으킬 이야 하지만 일:

select
  case pwd1.nonnullfield is null then pwd2.field else pwd1.field end

당신은 또한지 확인해야 할 그룹에 의해,으로 가입하 pwd2 것입니다 여전히 추가 행하는 결과를 설정하는 경우에도 당신은 결국 무시하고 데이터가 그것이다.

다른 팁

당신은 이야기에 대 한 단락 회로 평가입니다.

을 살펴 이 문서에서 그것은 당신을 도움이 될 수 있습:http://beingmarkcohen.com/?p=62

사용 TSQL,실행,정확히 일치하는지 확인 num 의 행==0,그렇다면,실행처럼,그렇지 않으면 실행하지 않음을 추가하거나 결과 같은 아래 정확히 일치합니다.

나만 생각할 수 있는 그 일의 코드입니다.보에 대한 정확히 일치하는 결과가 빈 찾습니다.다른 옵션은 곳에 이 쿼리는 여기서({계산서와 정확히 일치}=0),어떤 경우에,그것은 못 가서 비교를 통해와 같은 경우에는 정확하게 일치 이상을 반환하 0 결과입니다.그러나 그것의 비효율적...을 언급하지 않는 사실은 그것을 사용하여 의미 있는 코드에서는 오히려 어렵습니다.

나를 위해 가는 경우(계산서와 정확히 일치=0)다음과 같은 쿼리를 다른 사용하여 결과에서 정확하게 일치합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top