where 문) String으로 이뤄진 데이터에서 -2 값을 조회하고 싶어요 0 3 2,741

by 이페루 [Oracle 기초] [2023.11.27 10:23:53]


        SELECT *
        FROM BOARD_MONNOTICE_FILE
        WHERE BD_SQ = #{bdSq}
        AND FILE_DEL_DATE is NULL

        SELECT *
        FROM BOARD_MONNOTICE_FILE
        WHERE BD_SQ = #{bdSq} <- (이 자리에 -2의 값을 조회시키고 싶어요)
        AND FILE_DEL_DATE is NULL


    WHERE BD_SQ = #{bdSq-2}

    WHERE BD_SQ = #{bdSq} -2

이렇게는 조회가 안되는 건가요?

 

by 아발란체 [2023.11.27 10:40:35]

${bgSq} - 2 하면 됩니다.
하지만 어플리케이션 단에서 값을 -2 하여 #{bgSq}에 바인딩 하는 것이 제일 좋습니다.


#{bdSq} - 2는 '값' 형태로 '이 들어가서
'222' - 2 식으로 해석이 되어 오류가 발생하고

#{bdSq - 2}는 MyBatis에서 연산이 아닌 해당 값으로 바인딩을 하므로
"bdSq - 2"는 존재하지 않는 바인딩 변수 값으로 역시 오류가 발생합니다.
 

말씀 의도를 반영하면

#이 아닌 $로 

${bgSq} - 2 하면 됩니다.
근데 이 방법은 버전에 따라  SQL 변조(SQL Injection) 보안에 취약점을 가지고 있어

어플리케이션단에서 -2 값을 미리 연산하고 $가 아닌 #{bgSq} 방법을 권장합니다.


by 마농 [2023.11.28 15:55:13]

WHERE BD_SQ = #{bdSq} -2 이렇게 하면 될 것 같은데요??? 안되나요?


by 아발란체 [2023.11.29 11:41:38]

아 듣고 보니 '2' - 2    하면 자동 형 변환이 되어 될거 같습니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입