IT

ALL

MSSQL MERGE사용 안하고 있으면 UPDATE 없으면 INSERT 하기

SQLServer 2008 이상이면 MERGE를 사용하여 데이터가 있으면 UPDATE 없으면 INSERT를 할 수 있습니다. SQLServer 2005에서는 MERGE를 사용할 수 없기 때문에 직접 만들어줘야 합니다. 그러면 바로 작성방법을 보도록 하겠습니다. 먼저 테스트용 테이블을 작성하겠습니다. -- 테스트용 테이블 CREATE TABLE .( NOT NULL, (3) NOT NULL, (10) NULL, CONSTRAINT PRIMARY KEY CLUSTERED  ( ASC )WITH (STATISTICS_NORECOMPUTE...
ALL

MSSQL MERGE 테이블에 있으면 업데이트 없으면 추가 하기

SQL Server에서 MERGE를 사용하여 테이블 데이터를 업데이트(UPDATE) 또는 추가(INSERT)하는 방법을 보겠습니다. 우선 MERGE를 사용 하는 이유로 여러가지가 있지만 보관용 테이블에 최신 데이터로 갱신해야 하는 경우가 많습니다. 보관용 테이블에 데이터가 존재하는 경우에는 최신 데이터로 업데이트를 해줘야 하고, 존재하지 않는 데이터의 경우에는 추가를 해줘야 합니다. 쿼리로도 작성할 수 있지만 MERGE를 사용해서도 UPDATE와 INSERT를 간단하게할 수 있습니다. MERGE 사용 방법 --base_table를 ...
ALL

MSSQL 문자열에서 숫자 또는 문자만 추출 REPLACE, PATINDEX 사용 방법

SQL Server에서 데이터 값에 문자와 숫자가 같이 있는 경우 숫자 또는문자만 추출하고 싶은 경우가 있습니다. TRANSLATE 함수를 사용하여 추출할 수도 있지만 SQL Server 2017부터 사용 가능한 함수입니다. TRANSLATE 함수를 사용 못하는 경우에 숫자나 문자만 추출하는 방법을 알아보겠습니다. 사용할 함수는 REPLACE와 PATINDEX입니다. 우선 REPLACE와 PATINDEX 함수가 어떤 것인지 간단하게 살펴보겠습니다. REPLACE 지정한 문자열의 값을 다른 문자열로 변환. PATINDEX 패턴과 매칭...
ALL

MSSQL 모든 테이블 사용 용량 확인 방법

데이터 베이스를 사용하다 보면 서버 용량이 부족해지는 경우가 생깁니다. 어느 테이블이 디스트 용량을 많이 사용하고 있는지 확인을 해서 방법을 찾아야 하는 경우가 있습니다. 이번 포스팅에서는 Sql Server에서 모든 테이블의 사용 용량을 확인하는 쿼리를 알아보도록 하겠습니다. 테이블 사이즈 취득 방법 테이블이 사용하고 있는 디스크 사용용량을 간단히 취득하는 방법으로 sp_spaceused 사용해 확인할 수 있습니다. sp_spaceused는 스토어드 프로시저입니다. 사용방법 EXEC sp_spaceused 디비명.테이블명; 예를 ...
ALL

MSSQL 중복 레코드 검색 방법 GROUP BY 예제

중복 하는 레코드를 제거할때 많이 사용 하는 것이 DISTINCT입니다. DISTINCT는 중복 하는 레코드를 제거하고 표시 하기 때문에 중복인지 아닌지 바로 판단하기가 어렵습니다. GROUP BY를 사용하면 중복 하는 레코드를 제거 할 수도 있지만 어떤 레코드 값이 중복하는 확인도 할 수 있습니다. 여러가지 상황을 예제로 보도록 하겠습니다. 중복데이터 취득 GROUP BY와 HAVING을 같이 사용해 중복하는 데이터만 추출 할 수 있습니다. 샘플을 보도록 하겠습니다. 컬럼A가 중복되는 데이터 취득 SELECT 컬럼A FROM 테이...
ALL

MSSQL 실행한 SQL 쿼리 이력을 확인하는 방법

SQL Server에서 실행했던 쿼리 이력을 확인 하고 싶은 경우가 있습니다. 에러 조사를 위해서라던가 성능 향상을 위해 쿼리를 확인 해야 하는등 여러 경우가 발생 합니다. 쿼리 이력을 확인 하는 방법을 바로 알아보겠니다. 아래는 SQL Server에서 실행했던 쿼리 이력을 확인하는 쿼리문 입니다. SQL Server 쿼리 이력 확인 SELECT TOP 1000 QS.creation_time,  --SQL SUBSTRING(ST.text,(QS.statement_start_offset/2)+1,  ((CASE QS.statement...
ALL

MSSQL 숫자 소수점 또는 정수 부분 버림 ROUND 사용 방법

SQL Server에서 숫자의 소수점 또는 정수 부분을 반올림해야 하는 경우가 있습니다. SQL Server에는 숫자를 반올림해주는 함수가 준비되어 있습니다. ROUND(숫자) ROUND 함수는 기본적으로 소수점을 반올림 하지만 정수도 반올림을 할 수 있습니다. 우선 소수점을 반올림하는 방법을 살펴보겠습니다. 라운드 함수는 다음과 같이 사용합니다. ROUND(숫자) 파라미터를 하나만 지정한 경우에는 지정한 소수점을 반올림한 정수를 반환합니다. -- 숫자 10.9 반올림 SELECT ROUND(10.9); 결과 11 10.9 에서 소...
ALL

MSSQL 문자열 자르기 SUBSTRING 사용 방법

문자열에서 부분적으로 문자를 취득하는 방법을 알아보겠습니다. 문자열에서 원하는 문자를 취득하기 위해서는 문자열 잘라주는 함수를 사용합니다. 오라클에서는 SUBSTR 함수를 SQL Server에서는 SUBSTRING 함수를 사용합니다. SUBSTRING 사용 방법 문자열을 잘라주는 SUBSTRING 함수 사용 방법을 보겠습니다. SUBSTRING(str, n, m) str - 문자열 n - 시작 m - 취득 하고 싶은 문자 갯수 지정한 문자 str에서 n번째부터 m문자수를 추출합니다. 문자수 m은 생략 가능합니다. 생략할 경우 n번째...
ALL

MSSQL NULL과 공백문자 또는 0의 주의점

MSSQL를 사용하면서 자주 발생하는 버그 중 하나가 NULL과 공백문자에서 발생하게 됩니다. 또는 숫자 0에서도 발생하는 경우도 있습니다. MSSQL에서는 오라클과 다르게 NULL과 공백문자를 따로 취급하기 때문입니다. 오라클에서는 값을 입력하기 않거나 공백문자인 '' 만을 입력했을 경우 NULL로 인식합니다. 하지만 MSSQL에서는 값을 입력하지 않을 경우에는 NULL, 공백문자인 '' 입력한 경우에는 NULL이 아닌 ''로 등록됩니다. 이렇게 NULL과 공백문자인 ''를 따로 취급하기 때문에 SELECT로 데이터를 취득한 후 ...