source

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

nicesource 2023. 10. 16. 21:54
반응형

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

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

  • LIKE를 쓰는 이유가 있나요?
  • ='을 사용해야 하는 이유가 있습니까?
  • 퍼포먼스?가독성?

LIKE그리고 평등 연산자는 다른 목적을 가지고 있습니다. 그들은 같은 일을 하지 않습니다.
=훨씬 빠른 반면에LIKE와일드카드를 해석할 수 있습니다. 사용합니다.=가능하면 어디든지 그리고LIKE필요한 곳이면 어디든지

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

일치하는 샘플:

테스트 사용자1
테스트 사용자2
테스트U
시험

성능 차이를 보려면 다음과 같이 하십시오.

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"입니다.

Postgres가 문자열 일치를 위해 제공하는 몇 가지 다른 방법이 있습니다(만약 그것이 당신의 DB일 경우).

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

select * from people where name ilike 'JOHN'

일치 항목:

  • 존.
  • 존.
  • 존.

그리고 정말로 화를 내고 싶다면 일반적인 표현을 사용할 수 있습니다.

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

일치 항목:

  • 존.
  • 조너선
  • 조니.

= 연산자는 Transact-SQL에 공백이 있는 문자열을 패드하기 때문에'abc' = 'abc '참으로 돌아올 것입니다.'abc' LIKE 'abc 'false 를 반환합니다.대부분의 경우 '='가 맞지만 최근 제 경우에는 맞지 않았습니다.

따라서 '='이 더 빠르지만 LIKE는 사용자의 의도를 보다 명확하게 표현할 수 있습니다.

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

패턴 매칭은 LIKE를 사용합니다.=와 정확히 일치합니다.

LIKE패턴 매칭에 사용되며,=등식 테스트에 사용됩니다(에 의해 정의됨).COLLATION사용중).

=인덱스를 사용할 수 있는 동안LIKE쿼리는 일반적으로 결과 집합의 모든 레코드를 테스트하여 필터링해야 합니다(전체 텍스트 검색을 사용하지 않는 한).=더 좋은 성능을 가지고 있습니다.

LIKE는 셸에서 와일드카드 문자 [*, ?]와 같이 일치합니다.
'%suffix'처럼 - 접미사로 끝나는 모든 것을 주세요.=을(를) 가지고는 그렇게 할 수 없습니다.
사실은 경우에 따라 다릅니다.

성능이 느리더라도 "좋아요"를 사용하는 또 다른 이유가 있습니다.문자 값은 비교 시 정수로 암묵적으로 변환되므로 다음과 같습니다.

declate @transid varchar(15)

if @transid != 0

varchar 값의 변환 '123456789012345' overflowed int column" 오류가 나타납니다.

언급URL : https://stackoverflow.com/questions/515039/use-or-like-to-compare-strings-in-sql

반응형