1. IF EXISTS
-- 해당 테이블이 존재하면 실행되는 조건문
IF EXISTS (SELECT ID FROM TEST WHERE ID ='홍길동' ) --조건 설정
BEGIN
--조건 결과 값이 있을 때 실행문
END
ELSE
BEGIN
--조건 결과 값이 없을 때 실행문
END
-- 해당 테이블이 존재하지 않으면 실행되는 조건문
IF NOT EXISTS
2. WITH (NOLOCK)
-- MSSQL 은 기본적으로 SELECT 시 공유잠금이 걸림
-- 작업중인 테이블 에 SELECT 할 경우 해당 작업이 끝나야 SELECT 할 수 있음
-- 그렇게되면 DB의 성능은 떨어지고 데드락이 발생될수있음, 이를 방지하기 위해 사용함
SELECT * FROM TEST WITH(NOLOCK);
SELECT * FROM TEST1 t1 WITH(NOLOCK) INNER JOIN TEST2 t2 WITH(NOLOCK) ON t1.ID = t2.ID;
3. CHARINDEX
-- 문자열에서 특정 문자를 찾고 위치를 반환한는 함수
-- 오라클의 INSTR 함수와는 다르게 뒤에서 부터 찾는 기능은 없고 문자열의 앞부터 또는 특정 위치부터 문자를 검색
CHARINDEX("찾을문자", "문자열", "시작위치")
SELECT CHARINDEX('http', URL)
4. IIF
-- 오라클의 DECODE 함수같이 두가지의 값으로만 반환
SELECT IIF(@total >= 70, '1급', '2급')
5. OFFSET ROWS FETCH NEXT
-- 페이징 처리할때 사용
SELECT ID FROM TEST WITH(NOLOCK)
OFFSET (#{PAGE_NO}) * #{PAGE_SIZE} ROWS
FETCH NEXT (#{PAGE_SIZE}) ROWS ONLY
📌 MSSQL 격리수준
1. Read Uncommitted - nolock수준
2. Read Committed - default 수준
3. Repeatable - shared lock 수준
4. Serializable - 최고 격리수준
'SQL' 카테고리의 다른 글
[SQL] 자주 쓰는 PostgreSql 함수 정리 (0) | 2022.09.02 |
---|---|
[SQL] 자주 쓰는 Mysql 함수 정리 (2) | 2021.08.27 |
[SQL] 자주 쓰는 Oracle 함수 정리2 (1) | 2021.07.01 |
[SQL] 자주 쓰는 Oracle 함수 정리1 (0) | 2021.03.12 |