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 태그를 찾습니다.


테이블에 컬럼 검사 후 작업 수행을 하기 위해 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에 나와 있는 도움말은 보기 쉽고 잘 되어 있는거 같다... 한글화도 많은 부분 적용되어 있어 자주 사용되는 쿼리문의 경우 다른 참고 자료 없이 사용이 가능하다.

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

[MS-SQL] 리스트 페이지 구하기  (0) 2020.03.23
[MSSQL] IN / NOT IN Condition  (0) 2016.03.10
[MS-SQL] 정규식을 이용한 ad-hoc 쿼리  (0) 2016.02.12
[MSSQL] 테이블 컬럼 존재 확인  (0) 2014.01.20

+ Recent posts