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는 의도를 더 명확하게 진술 할 수 있습니다.
답변
패턴 일치의 경우 LIKE를 사용하십시오. 정확히 일치하려면 =.
답변
LIKE
패턴 매칭 =
에 사용되며 동일 테스트 COLLATION
에 사용됩니다 (사용중인 정의 ).
=
LIKE
쿼리는 일반적으로 전체 텍스트 검색을 사용하지 않는 한 결과 집합의 모든 단일 레코드를 필터링하여 필터링하여 =
성능을 향상 시키는 동안 인덱스를 사용할 수 있습니다 .