하위 문자열을 포함하는 문자열을 찾기 위해 쿼리를 작성하려고합니다. 다음 두 가지 방법의 차이점은 무엇입니까?LIKE를 사용하여 substring에 대한 sql 검색()
SELECT * FROM table WHERE names LIKE '%bob%'
는
SELECT * FROM table WHERE locate('bob', names)
하위 문자열을 포함하는 문자열을 찾기 위해 쿼리를 작성하려고합니다. 다음 두 가지 방법의 차이점은 무엇입니까?LIKE를 사용하여 substring에 대한 sql 검색()
SELECT * FROM table WHERE names LIKE '%bob%'
는
SELECT * FROM table WHERE locate('bob', names)
상당 부분 맛의 문제입니다.
like
은 ANSI 표준 SQL로 대부분의 데이터베이스에서 지원됩니다. locate
은 MySQL에만 해당되므로 다른 데이터베이스에 반드시 이식 할 필요는 없습니다.
일부 데이터베이스는 인덱스를 사용하기 위해 식 x like 'y%'
을 최적화합니다. MySQL은 그렇지 않습니다. 따라서 이것은 당신을위한 고려 사항이 아닙니다.
like
의 또 다른 장점은 초기 일치 ('y%'
) 및 최종 일치 ('%y'
)와 중간 일치를 지원한다는 것입니다. 세 가지 방법 중 하나. locate
을 사용하는 동등한 명령문은 더 복잡합니다.
특히 휴대 성 때문에 like
을 선호합니다. 그러나 나는 전형적으로 다른 캐릭터 세트를 다루지 않는다. MySQL에서는 learning about collations을 사용하는 것이 좋을 수도 있습니다.
그들은 단순히 똑같은 일을하지 않습니다. LIKE
은 텍스트 일치를 수행하는 연산자이며 LOCATE
은 첫 번째 항목의 위치를 반환하는 함수입니다.
http://www.w3resource.com/mysql/string-functions/mysql-locate-function.php http://www.w3resource.com/mysql/string-functions/mysql-like-function.php