SQL

[SQL] 자주 쓰는 MSSQL 함수 정리

obin01 2025. 3. 27. 14:12

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 - 최고 격리수준