프로젝트를 진행하다보면 가끔씩 랜덤으로 데이터를 정렬해야하는 경우가 있습니다. MSSQL에서는 NEWID()함수를 ORDER BY 절에 사용해서 간단히 랜덤 정렬을 할 수 있습니다. NEWID() 함수는 새로운 고유 식별자(GUID)를 생성하는 함수입니다. 매번 호출될 때마다 랜덤한 고유한 값을 반환하는데 그 값은 16진수로 표현되는 128비트 값입니다. 이 함수를 ORDER BY 구문과 함께 사용하면 각 행에 대해 랜덤한 값을 생성하여 그 값에 따라 정렬을 수행합니다. 실행할 때마다 그 값이 변경되기 때문에 랜덤 정렬이 가능합니다. 다음 쿼리에 사용한 예입니다. SELECT * FROM TableName ORDER BY NEWID(); 좀 더 자세한 예제를 통해 확인해보겠습니다. 아래는 랜덤하게 고객 ..
MSSQL에서 데이터 순서 지정하는 방법에 대해 알아보겠습니다. 특정 데이터 항목에 순서대로 번호를 매길 수 있는 함수 중에 자주 사용하는 함수는 ROW_NUMBER() 입니다. 이 함수를 사용하면 원하는 컬럼값을 오름차순이나 내림차순으로 정렬해 순서를 매길 수 있습니다. 우선 ROW_NUMBER() 함수의 기본 구문에 대해서 알아보겠습니다. ROW_NUMBER() OVER ( [PARTITION BY column1, column2, ...] ORDER BY column1, column2, ...) - PARTITION BY 절 (선택 사항): 이 절은 행 번호를 생성할 때 그룹을 지정하는 데 사용됩니다. 즉, 특정 열 또는 열의 조합에 따라 결과를 그룹화하고 각 그룹 내에서 행 번호가 재설정됩니다. 예..
MSSQL DB를 사용하다가 보면 서버 이전이나 데이터 복구 등 DB를 복원해야하는 경우가 간혹 생깁니다. 예상 작업시간을 미리 알아보기 위해 다른 서버에서 복원 테스트를 해봤다고 하더라도 실제 작업시에 진행률을 체크하는 건 변수 통제를 위해 중요합니다. 이런 때 사용할 수 있는 MSSQL DB 복원 진행 확인 쿼리에 대해 알아보겠습니다. SELECT session_id, percent_complete, total_elapsed_time, estimated_completion_time FROM sys.dm_exec_requests WHERE command = 'RESTORE DATABASE' AND percent_complete > 0; 위 쿼리를 사용하면 DB 복원 작업의 진행 상황을 확인할 수 있습니..
MSSQL 프로시저를 작성하다보면 최상단에 SET NOCOUNT ON이라고 선언하는 경우를 볼 수가 있습니다. 과연 SET NOCOUNT ON은 무슨 의미를 가지고 있는지 확인해보겠습니다. SET NOCOUNT ON과 SET NOCOUNT OFF는 MSSQL에서 사용되는 옵션으로 실행된 쿼리에 대한 상태 메시지를 제어하는 역할을 합니다. - SET NOCOUNT ON: 쿼리를 실행했을 때 영향을 받은 행의 수를 반환하는 메시지가 출력되지 않음. - SET NOCOUNT OFF: 쿼리를 실행했을 때 영향을 받은 행의 수를 반환하는 메시지가 출력됨. SET NOCOUNT ON 으로 옵션을 설정하면 성능 개선에 도움이 됩니다. 쿼리 실행 시 반환되는 메시지의 수가 줄어들기 때문에 네트워크 트래픽을 감소시키고 ..
웹 게시판에서 가장 많이 사용하는 기능 중 하나인 페이징 구현 시 도움이 될만한 쿼리에 대해 알아보겠습니다. MSSQL을 사용한다면 MSSQL 2012부터 지원하기 시작한 OFFSET-FETCH 구문으로 간단하게 페이징 처리를 할 수 있습니다. 다음 예를 통해 구체적인 사용법을 알아보겠습니다. DECLARE @PageNumber INT; DECLARE @PageSize INT; SET @PageNumber = 1; SET @PageSize = 10; SELECT ProductID, ProductName, Price FROM Products ORDER BY ProductID DESC OFFSET ((@PageNumber - 1) * @PageSize) ROWS FETCH NEXT @PageSize ROWS..
쿼리를 작성하다보면 문자열에 특정 문자가 유무를 확인해야하는 경우가 있습니다. 이럴 때 사용할 수 있는 게 바로 CHARINDEX 함수 입니다. MSSQL의 CHARINDEX 함수는 특정 문자가 다른 문자열 내에서 처음으로 나타나는 위치를 찾아줍니다. CHARINDEX 함수는 대소문자를 구분하고 일치하는 첫 번째 문자열의 위치를 INT형으로 반환해줍니다. 먼저 CHARINDEX 함수의 매개변수에 대해서 알아보겠습니다. CHARINDEX(expression, searchstring, [start_location]) - expression : 검색 하려는 문자 또는 문자열. - searchstring : 찾으려는 문자 또는 문자열. - start_location(생략가능) : 검색을 시작할 위치 지정. 생략..
협업을 하거나 점검을 위해서 DB의 프로시저나 함수의 변경이력을 확인해야 하는 상황이 생길 때가 있습니다. 그럴 때 사용할 수 있는 MSSQL 프로시저, 함수 변경이력 확인 쿼리를 알아보겠습니다. SELECT SPECIFIC_CATALOG -- DB 이름 , SPECIFIC_SCHEMA -- 스키마 이름 , SPECIFIC_NAME -- 프로시저나 함수의 이름 , ROUTINE_TYPE -- 저장 프로시저인 경우 'PROCEDRUE', 함수의 경우 'FUNCTION' , ROUTINE_DEFINITION -- 저장프로시저 또는 함수의 내용 , CREATED -- 생성일 , LAST_ALTERED -- 마지막 수정일 FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYP..
DB를 오래 사용하다보면 용량이 너무 커지지 않도록 관리해줘야 하는 경우가 생깁니다. 너무 용량이 큰 테이블이 있는 경우 오래된 데이터를 분리해 관리하거나 삭제를 해주는데 그럴 때 사용할 수 있는 테이블 용량, 건수 확인 쿼리를 알아보겠습니다. [테이블 용량 확인 쿼리] SELECT table_name = convert(varchar(30), min(o.name)) , table_size = convert(int, ltrim(str(sum(reserved) * 8.192 / 1024., 15, 0))) , UNIT = 'MB' FROM sysindexes i INNER JOIN sysobjects o ON (o.id = i.id) WHERE i.indid in (0, 1, 255) AND o.xtype ..
MSSQL에서 프로시저를 사용하다보면 테이블의 데이터 유무를 확인해서 데이터 추가, 수정 처리해주는 일이 많이 생깁니다. 이럴 때 IF EXISTS (SELECT~) 문을 사용하면 간단히 처리해줄 수 있습니다. 다음은 IF EXISTS~ 를 사용해 데이터를 수정하거나 추가하는 조건문입니다.DECLARE @IDX INT; DECLARE @TXT VARCHAR(50); SET @IDX = 1; SET @TXT = "안녕하세요"; IF EXISTS (SELECT NUM FROM TABLE WHERE IDX = @IDX) BEGIN --데이터가 있는 경우 수정 UPDATE TABLE SET TXT = @TXT WHERE IDX = @IDX END ELSE BEGIN --데이터가 없는 경우 추가 INSERT IN..
프로그램을 유지보수하다보면 실서버에서 기존에 만들어져 있던 트리거가 실행되지 않게 데이터를 수정해야하는 일이 간혹 생깁니다. 만약 서비스를 중지시키기 힘든 상황일 경우 마우스로 제어하는 방법은 시간이 오래 걸려 정상적인 데이터들까지 문제가 생길 수 있기 때문에 관리자 입장에서는 쿼리를 찾게 됩니다. 그럼 이런 상황에서 간단히 쓸 수 있는 트리거 비활성화/활성화 쿼리에 대해 알아보겠습니다. 1. 트리거 비활성화 시키기 ALTER TABLE USER DISABLE TRIGGER TRG_USER_UPDATE; --ALTER TABLE 테이블명 DISABLE TRIGGER 트리거명; 2. 트리거 활성화 시키기 ALTER TABLE USER ENABLE TRIGGER TRG_USER_UPDATE; --ALTER ..
- Total
- Today
- Yesterday
- Roma
- 자바스크립트
- 한글깨짐
- iframe
- 런던
- 고성
- 근위병교대식
- 비스페놀A
- 인코딩
- USB
- 영국
- html
- 로마
- mssql
- ASP.NET
- 환경호르몬
- DATEDIFF
- 태풍
- URL
- jquery
- toFixed
- 플라스틱
- MS-SQL
- 체크박스
- 이순신
- javascript
- london
- favicon
- 템즈강
- ASP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |