1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 총 페이지 구하기
select CEILING(count([mail_id])/30.0from MailBox
where limit_time > getdate() and [to] = 13400
 
 
-- 요청 페이지 가져오기
DECLARE @page_no int = 1            -- 페이지 번호
DECLARE @page_row_count int = 28    -- 한 페이지 열 개수
 
SELECT SequenceNo, [from], [to], itemType, receiveType, receiveTime, expireTime from Mailbox
WHERE receive_time < getdate()-1 and expireTime > getdate() and [to] = 13400
ORDER BY expireTime DESC 
OFFSET (@page_no - 1* @page_row_count ROW FETCH NEXT @page_row_count ROW ONLY
 
-- OFFSET (@page_no - 1) * @page_row_count  // 페이지의 시작 번호
-- ROW FETCH NEXT @page_row_count ROW ONLY  // 페이지의 끝 번호

 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- IN Condition
 
-- first_name 컬럼에 IN 오른쪽의 단어를 포함하고 있는 rows를 출력합니다.
SELECT *
FROM employees
WHERE first_name IN ('Sarah''Jane''Heather');
 
 
-- NOT IN은 반대의 의미로 포함되지 않은 rows를 출력합니다.
SELECT *
FROM employees
WHERE first_name NOT IN ('Sarah''Jane''Heather');
 
 
-- /* WHERE first_name = 'Sarah' OR first_name = 'Jane' OR first_name = 'Heather' */
-- 위의 문장과 비교하여 선호하는 방향의 문법을 사용하면 된다.
cs


정규식은 처음 접하면 암호 같다. 하지만 복잡한 상황에 조건이 필요한 경우 사용하게 되면 간단하게 해결 되는 경우가 있다. 그러므로 정규식은 꼭 학습이 필요하다.

1
2
3
-- float이 아닌 value를 찾는 정규식.
SELECT * FROM TestDB WHERE type='float' and trim(value) NOT REGEXP '^[+-]?\d*(\.?\d*)$'
 
cs



MSDN 정규식 구문 링크


일치 항목

/^\s*$/

빈 줄을 찾습니다.

/\d{2}-\d{5}/

2자리 숫자, 하이픈 및 추가 5자리 숫자로 구성된 ID 번호의 유효성을 검사합니다.

/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/

HTML 태그를 찾습니다.


'Databases > MS-SQL' 카테고리의 다른 글

[MS-SQL] 리스트 페이지 구하기  (0) 2020.03.23
[MSSQL] IN / NOT IN Condition  (0) 2016.03.10
[MS-SQL] 설치 버전 확인  (0) 2016.01.20
[MSSQL] lock 걸린 테이블 조회하기  (0) 2015.05.11
[MSSQL] 테이블 컬럼 존재 확인  (0) 2014.01.20

실행 중인 SQL Server 데이터베이스 엔진 버전 및 Edition을 확인하는 방법

SQL Server 버전을 확인하려면 다음 방법 중 하나를 사용할 수 있습니다.

방법 1: SQL Server Management Studio에서 개체 탐색기를 사용하여 서버에 연결합니다. 개체 탐색기가 연결되면 버전 정보가 괄호로 묶여 표시되고 해당 특정 SQL Server 인스턴스에 연결하는 데 사용된 사용자 이름이 표시됩니다.

방법 2: 해당 인스턴스에 대한 오류 로그 파일의 처음 몇 줄을 확인해봅니다. 기본적으로 오류 로그는 Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG 및 ERRORLOG.n 파일에 있습니다. 해당 항목은 다음과 비슷합니다.
2011-03-27 22:31:33.50 Server      Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64)                 Mar 29 2009 10:11:52                 Copyright (c) 1988-2008 Microsoft Corporation                Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )
알고 있는 것처럼 이 항목은 제품에 대한 모든 필수 정보(예: 버전, 제품 수준, 64비트/32비트, SQL Server Edition 및 SQL Server가 실행 중인 OS 버전)를 제공합니다.

방법 3: SQL Server 인스턴스에 연결하고 다음 쿼리를 실행합니다.
Select @@version
이 쿼리의 출력 예는 다음과 같습니다.

Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64)   Mar 29 2009 10:11:52   Copyright (c) 1988-2008 Microsoft Corporation  Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )


테이블 락 (TABLE LOCK) 걸린 경우 정보 검색이 필요하다면 사용하면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
EXEC  sp_lock
 
==============================================================
-- sp_lock으로 검색해보면 ObjId가 존재하는데 조건문에 넣어주면 된다.
 
SELECT * FROM sysobjects WHERE  id = ObjId
 
==============================================================
-- Lock 걸린 spid 조회하기
DBCC  inputbuffer(spid)
 
==============================================================
-- Lock 걸린 spid 종료하기
KILL  spid
 
cs


테이블에 컬럼 검사 후 작업 수행을 하기 위해 IF문을 사용하는데 

보통의 경우 사용하는 쿼리는 다음과 같다.

-------------------------------------------------

SELECT * FROM T_BASE_NAME WHERE ID = 1111

IF @@ROWCOUNT <> 1

RETURN 1

-------------------------------------------------


IF NOT EXISTS 를 사용하면 다음과 같다.

-------------------------------------------------

IF NOT EXISTS (SELECT * FROM T_BASE_NAME  WHERE ID = 1111)

RETURN 1

-------------------------------------------------

테이블에 컬럼이 존재하는지 확인 후 없다면 RETURN 1을 수행하라.

어느정도 코드에 대한 분석이 끝나고 아이템 제작 및 개선 쪽으로 첫 업무를 맡게 되면서 프로시저를 사용이 필요한 상태가 되었다.... 프로시저를 책으로 봤지만 짧은 시간 봤던 이유로 정확히 활용 방법을 몰랐다....

회사 선배의 도움으로 무엇인지 알게 되었는데....
설명을 듣고 함수와 동일하게 동작하는 형태를 보고 결론은 함수와 동일하다로 결론 내렸다....

결론을 토대로 한번 정리해 보았다.... ^^;;;;  (MS-SQL 2000 기준으로 작성해 보았다...)

   프로시저 생성  CREATE  PROCEDURE  [생성이름] 

   매개변수 사용  @nName  int,
 @nTemp  char(13)
 AS

  변수 생성  DECLEAR  @nName  int

 변수 값 설정   SET @nName = 10

 SELECT @nName = strName FROM tableName
 WHERE NameType = 0 

  조건문  IF (@nName < 10)
      BEGIN
         -- TRUE인 경우 실행.
     END
 ELSE
      BEGIN
        -- FALSE인 경우 실행.
     END

  반복문  WHILE (@nName < 10)
    BEGIN
      -- 조건이 TRUE인 경우 계속 반복 수행한다.
    END

  반복문 추가  while (@nName < 10)
 begin
       if (@nName < 2)
       begin
            continue    -- while문에서 처음부터 다시 시작
       end
       break    -- while문에서 강제로 벗어난다.
 end


  랜덤값 구하기  RAND()*100


 참고로 MS-SQL에 나와 있는 도움말은 보기 쉽고 잘 되어 있는거 같다... 한글화도 많은 부분 적용되어 있어 자주 사용되는 쿼리문의 경우 다른 참고 자료 없이 사용이 가능하다.

+ Recent posts