Backend 개발자/StackOverflow

Mssql Row 데이터 체크 유무 boolean 처리, 문자열 자르기 left right substring

by 앵과장 2022. 12. 13. 15:26
반응형

mybatis로 처리하다보면 특정 테이블에 값이 있는지

유무체크를 구현할때 사용하면 되는 간단한 boolean 처리 쿼리 공유드립니다.

        IF EXISTS(
            SELECT 1 FROM USER WITH(READUNCOMMITTED)
            WHERE USER_ID = #{userId}
            AND TYPE = #{type}
        )
        BEGIN
            SELECT 1
        END
        ELSE BEGIN
            SELECT 0
        END

IF EXISTS 조건에 부합하는 Query 실행후 검색한 User 테이블에 userId 값이 있다면 

1 : true 를 리턴하고 아니라면 0 : false 리턴하게 됩니다.

    <select id="checkByUser" resultType="boolean" parameterType="sample.request.UserRequest">
        IF EXISTS(
            SELECT 1 FROM USER WITH(READUNCOMMITTED)
            WHERE USER_ID = #{userId}
            AND TYPE = #{type}
        )
        BEGIN
            SELECT 1
        END
        ELSE BEGIN
            SELECT 0
        END
    </select>

mybatis xml에 작업하게 되면 resultType="boolean" 으로 반환됩니다.

 

MSSQL 문자열 자르기 함수 LEFT, RIGHT, SUBSTRING
LEFT (문자열 왼쪽 부터 자르기) 

LEFT 함수는 문자열을 받아서 왼쪽부터 길이만큼 자르는 함수 입니다.

주민등록번호, 생년월일, 특정코드, 날짜 필드를 잘라서 노출하거나 이름에서 성만 노출할때 사용될수 있습니다.

LEFT(문자열,길이)
예시) LEFT(typeCode,5)


SELECT LEFT(typeCode,5) as fistCode FROM USER


SELECT * FROM USER T1
LEFT JOIN CODE T2 ON T2.typeCode = LEFT(T1.typeCode,5)
RIGHT (문자열 오른쪽 부터 자르기)

RIGHT 함수는 문자열을 받아서 오른쪽 부터 길이만큼 자르는 함수 입니다.

LEFT와 동일하게 다양한 필드 문자열 처리에 사용됩니다.

RIGHT(문자열,길이)
예시) RIGHT(typeCode,5)


SELECT RIGHT(typeCode,5) as fistCode FROM USER


SELECT * FROM USER T1
LEFT JOIN CODE T2 ON T2.typeCode = RIGHT(T1.typeCode,5)
SUBSTRING

SubString 함수는 (문자열, 시작자리index, 자를문자열수) 3가지 매개변수를 전달받아 처리할수 있습니다.

select SUBSTRING(UNIV_CODE,2,3), UNIV_NAME, RIGHT(LOGO_FILE_NAME,15) from CODE;

--테이블(USER)에서 날짜(REG_DT)를 잘라 0000년00월00일 형식으로 만들기--
SELECT 
SUBSTRING(REG_DT,1,4)+'년'+SUBSTRING(REG_DT,5,2)+'월'+SUBSTRING(REG_DT,7,2)+'일' AS 일자
FROM USER