mysql 에는 "ss ss" 이렇게 중간에 공백으로 저장이 되어있는데요.
이걸 검색할려고 하는데
"ss ss" 이렇게만 쳐도 검색이 되도록 하고 싶습니다.
select* from 테이블 where 필드 = 'ss ss' ==> 결과값 출력됨
select * from 테이블 where 필드 = 'ss ss' ==> 결과값 출력안됨ㅠㅠ
방법이 없나요?
가장 손쉽게는
SELECT *
FROM 테이블
WHERE 필드 LIKE CONCAT('ss ', '%', 'ss')
공백을 중심으로 중간중간에 %가 들어가는 LIKE 문으로 구성하면 되지 않을까요?
이 방법이 아니면 필드내의 공백을 하나만 남기고 제거한 후 비교해야 하는데,
이는 인덱스 scan을 포기하는 일이니 성능에 매우 불리할 수 있습니다.
String 중간의 공백들을 하나씩만 남기는 방법은 REPLACE함수 3번 사용하면 가능합니다...
단, 필드값 중간에 '@'문자는 없다고 가정합니다...참고하세요...;
REPLACE (REPLACE (REPLACE (필드, ' ', '@ '), ' @'), '@ ', ' ')
건승하시길...수고하세요~~