2009-08-27 2 views
5

나는 (하나 개의 VARCHAR 필드에) 데이터베이스에 잠재적 인 일치를 확인하려는 값이 그래서 내가 좋아하는 뭔가 쓰기 음 주어진 다음 경우에 작동합니다MySQL의 질문

SELECT * FROM table WHERE column LIKE "%value%" 

SELECT * FROM table WHERE CONCAT("%",column,"%") LIKE "value" 

하지만 돈 : 값은 "테스트"와 열 같은 뭔가가 반전 그러나이라면 내가의 라인을 따라 일을 시도 일치하지 않습니다 "이 테스트입니다"의 값을 가지고있다 내가 정확히 응답하는 방법을 Google에 구술하는 방법을 알고 있습니다. 도움을 요청하십시오!

+1

왜이 작업을 수행 하시겠습니까? –

+0

그는 컬럼 이름에서 비슷한 것을 가진 컬럼 세트를 갖고있는 것처럼 보이고, 자신의 '가치'가 이들 중 하나에 포함되어 있는지보기를 원합니다 ... – Irfy

+0

자유에 대해서는 말할 것도 없습니다. –

답변

11

like 문을 취소 할 수 있습니다. 그냥 일반 like 쿼리와 같은 구문을 사용하여 : 당신은 야생 및 미친 생각하면, 물론

select 
    * 
from 
    table 
where 
    'value' like concat('%', column, '%') 

, 당신은 또한 사용할 수 instr :

select * from table where instr('value', column) > 0 

내가 하나가 빠르게 알하지 않습니다 , 테스트 할 MySQL 인스턴스가 없기 때문에,하지만 둘 중 어떤 것이 승리하는지 알아 보는 것이 좋습니다.

+0

첫 번째 대답은 +1입니다. 이것은 좋아 보인다. –

+0

매우 멋지다. 이것이 가능할 지 전혀 몰랐다! – Irfy

+1

열이있는 경우 인덱스를 사용하여 데이터를 변환합니다 (찾을 수 없음). 열에 원하는 것을 추가하려면 인라인보기를 사용하는 것이 더 빠르며, 그 다음을 비교합니다. 단어가 나오는 행만 원할 경우 INSTR을 사용하는 것이 좋습니다. –

3
SELECT * 
FROM table 
WHERE 'value' LIKE CONCAT('%', column, '%')