like문 사용때 주의사항

2021. 9. 14. 11:13DB이관

반응형

DB이관을 하게되었는데 오라클->마리아DB로의 이관이였다. LIKE 문을 사용하는경우 mysql의 문법과 거의 유사하게 따르기때문에 mysql의 문법처럼 like 동적할당 하는부분들 다 바꿔줘야만 했다!!

 

# SQL 에서 LIKE 문 은 아래와 같이 사용된다.

 

SELECT * FROM TABLE_NAME

WHERE COLUMN_NAME LIKE PATTERN 

 

 

SELECT FROM SAMPLE

WHERE TAG LIKE 'Sa%' 

 

OR WHERE TAG LIKE '%am' 

OR WHERE TAG LIKE '%am%'  

 

 

# Mybatis에서는 DBMS 종류 별로 차이가 있다.

 

# MySql

 

SELECT FROM TABLE_NAME

WHERE COLUMN_NAME LIKE CONCAT(‘%’, #{searchKeyword}, ‘%’)

 

# ORACLE

 

SELECT FROM TABLE_NAME

WHERE COLUMN_NAME LIKE '%'||#{searchKeyword}||'%' 

 

 

# Ms-Sql

 

SELECT FROM TABLE_NAME

WHERE COLUMN_NAME LIKE '%' + #{searchKeyword} + '%'

 

이 처럼 미묘하게 다르니깐, 꼭 확인후 사용 하자.  

 

 

 

 

추가 

 

# # 대신 $ 를 붙여서 SQL 에서 쓰던식으로 써도 된다고는 하는데 해보지는 않았다.

SELECT FROM TABLE_NAME

WHERE COLUMN_NAME LIKE '%${searchKeyword}%' 

해당부분은 '' 생략되어 sql 인젝션에 취약해짐. 관계없는 검색부분이긴 하지만 # 중심으로 사용해야함.

 

출처: https://dongram.tistory.com/12 [Dongram 개발]

 

 

반응형