MySQL에서 LIKE검색쿼리를 작성하던중, LKIE검색이 내가 자주 사용하던 ORACLE과 틀려서 정리해보았다
MySQL :
SELECT * FROM tbl_name WHERE column_name LIKE "%$username$%"
SELECT * FROM tbl_name WHERE column_name LIKE CONCAT('%', #username#, '%')
ORACLE :
SELECT * FROM tbl_name WHERE column_name LIKE '%' || #username# || '%'
SYBASE/SQL SERVER
SELECT * from tbl_name WHERE column_name LIKE '%' + #username# + '%'
변수명을 #로 둘러싸는 것과 $로 둘러싸는것의 차이점
#의 경우에는 Prepare Statement로 등록이 된다. 디버그를 찍어봐도 ?로 치환된 이후 값이 대입된다.
하지만 $의 경우 바로 값이 치환된다. 특정 변수가 바로 DB에 입력되므로 보안에 좀더 신경을 써야 할것으로 생각된다.
될수있으면 LIKE CONCAT('%', #username#, '%')과 같은 방법을 사용하는게 좋을 듯 하다.
'헬로마켓'과 함께하는 스마트한 중고 아이템 거래