[sql] SQL에서 문자열을 비교하려면 ‘=’또는 LIKE를 사용 하시겠습니까?

SQL 문에서 문자열을 비교하기 위해 LIKE 또는 ‘=’를 사용해야하는 경우 (거의 종교적인) 논의가 있습니다.

  • LIKE를 사용해야하는 이유가 있습니까?
  • ‘=’를 사용해야하는 이유가 있습니까?
  • 공연? 가독성?


답변

성능 차이를 보려면 다음을 시도하십시오.

SELECT count(*)
FROM master..sysobjects as A
JOIN tempdb..sysobjects as B
on A.name = B.name

SELECT count(*)
FROM master..sysobjects as A
JOIN tempdb..sysobjects as B
on A.name LIKE B.name

‘=’로 문자열을 비교하는 것이 훨씬 빠릅니다.


답변

LIKE평등 연산자는 다른 목적을 가지고 있으며, 같은 일을하지 않습니다 :
=훨씬 빠르지 만 LIKE와일드 카드를 해석 할 수 있습니다. =당신이 할 수있는 LIKE곳 과 필요한 곳 어디에서나 사용하십시오 .

SELECT * FROM user WHERE login LIKE 'Test%';

일치하는 샘플 :

TestUser1
TestUser2
TestU
테스트


답변

나의 작은 경험에서 :

“=”정확한 일치.

부분 일치의 경우 “좋아요”


답변

Postgres가 문자열 일치를 위해 제공하는 몇 가지 다른 트릭이 있습니다 (DB 인 경우).

대소 문자를 구분하지 않는 LIKE 일치 인 ILIKE :

select * from people where name ilike 'JOHN'

성냥:

  • 남자
  • 남자
  • 남자

그리고 정말로 화를 내고 싶다면 정규 표현식을 사용할 수 있습니다.

select * from people where name ~ 'John.*'

성냥:

  • 남자
  • 요나 톤
  • 남자

답변

‘=’연산자는 Transact-SQL에서 공백으로 문자열을 채 웁니다. 따라서 'abc' = 'abc 'true를 반환합니다. 'abc' LIKE 'abc '거짓을 반환합니다. 대부분의 경우 ‘=’는 정확하지만 최근의 경우에는 그렇지 않습니다.

따라서 ‘=’는 빠르지 만 LIKE는 의도를 더 명확하게 진술 할 수 있습니다.

http://support.microsoft.com/kb/316626


답변

패턴 일치의 경우 LIKE를 사용하십시오. 정확히 일치하려면 =.


답변

LIKE패턴 매칭 =에 사용되며 동일 테스트 COLLATION에 사용됩니다 (사용중인 정의 ).

=LIKE쿼리는 일반적으로 전체 텍스트 검색을 사용하지 않는 한 결과 집합의 모든 단일 레코드를 필터링하여 필터링하여 =성능을 향상 시키는 동안 인덱스를 사용할 수 있습니다 .