[SQL] MySQL의 : LIKE의 역 버전은 무엇입니까?
SQLMySQL의 : LIKE의 역 버전은 무엇입니까?
MySQL의에서 LIKE 연산자는 예를 들어, 우리의 쿼리 텍스트를 포함하는 행을 찾는 데 사용됩니다 :
select name from user where name like "%john%"
존 스미스, 피터 존슨 등을 반환하는
내가 반대해야하는 경우 - 우리 쿼리 텍스트에 포함 된 행을 찾을 수 있습니까? 예를 들어 나는 존 스미스와 피터 존슨은 가장 친한 친구하고 나에게이 문자열에서 발견 될 수있는 테이블의 모든 이름을 찾으려면을 제공합니다.
그렇게하는 방법?
해결법
-
==============================
1.여기에 당신이 무엇을 설명 달성 할 수있는 방법이있다 :
여기에 당신이 무엇을 설명 달성 할 수있는 방법이있다 :
SELECT name FROM user WHERE 'John Smith and Peter Johnson are best friends' LIKE CONCAT('%', name, '%')
-
==============================
2.
select name from users where instr('John Smith and Peter Johnson', name) > 0
차라리이 방법 대신를 사용합니다 :
select * from users WHERE 'John Smith and Peter Johnson' LIKE CONCAT('%', name ,'%')
이름이 %를 포함하거나 수 _ 문자 기회가있는 경우 (예. 이름 = '브이 %의 ALUE')가 다음 위의 쿼리는 여전히 잘못 그 기록을 반환하기 때문이다. 또한 열이 백 슬래시 및 / 또는 그들은 또한 필요 "C 이스케이프 문자"를 포함 할 수 있다면하는 것은 탈출 할 수 있습니다. 이것은 모든 MySQL의 문자열 비교 함수에 설명되어 있습니다. 예를 들어 SQL 아래의 1을 반환합니다 :
SELECT 'val\%ue' LIKE CONCAT('%', 'al\\\\\%u' ,'%');
\\\\와 % 문자로 이스케이프 할 필요가 단일 백 슬래시 탈출했다 : \ %를.
-
==============================
3.이것은 텍스트 인덱싱 문제입니다. 내가 바로 그것을 얻을 경우, 당신의 작업은 자유 형식의 텍스트에있는 사람들에 대한 모든 참조를 찾을 수 있으며, LIKE 또는 NOT LIKE과는 아무 상관이 없습니다.
이것은 텍스트 인덱싱 문제입니다. 내가 바로 그것을 얻을 경우, 당신의 작업은 자유 형식의 텍스트에있는 사람들에 대한 모든 참조를 찾을 수 있으며, LIKE 또는 NOT LIKE과는 아무 상관이 없습니다.
일반적인 형태로, 당신은 참조를 찾고있는에 대한 데이터베이스 테이블 일부 텍스트 인덱싱 알고리즘에 대한 사전의 역할을합니다. 이 사전을 사용하여 입력 문자열에 인덱스를 구축하고 희망 당신은 어떤 일치를 얻을 것이다.
from https://stackoverflow.com/questions/472063/mysql-what-is-a-reverse-version-of-like by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] (*) 또는 카운트 더 나은 MYSQL 수있는 무엇입니까 (1)? (0) | 2020.04.15 |
---|---|
[SQL] null 값과 MySQL의 비교 (0) | 2020.04.15 |
[SQL] 나는 날짜 시간으로는 SQL 서버 2008 DateTimeOffset으로 변환 할 수있는 방법 (0) | 2020.04.15 |
[SQL] 어떻게 SQL과 중복 행을 삭제하려면? (0) | 2020.04.15 |
[SQL] 포스트 그레스 데이터 형식 캐스트 (0) | 2020.04.15 |