본문 바로가기

MSSQL

MSSQL 프로시저 텍스트 검색 프로젝트 중에 테이블 이름이 바뀌는 경우가 있다고 가정합시다. 그럼 기존에 작성된 프로시저나 사용자 정의함수 중에 변경될 테이블명이 사용된 것들을 찾으려는 경우 어떻게 해야 할까요? 모든 프로시저를 다 까보고 전수검사 하겠다는 다짐하시는건 아니겠죠? 다음과 같은 쿼리로 한번에 어떤 프로시저에 텍스트가 포함되어 있는지 검색을 할 수있습니다. 검색쿼리(Stored Procedure Text Search) SELECT xtype, name, text FROM syscomments COM JOIN sysobjects OBJ ON COM.id = OBJ.id WHERE OBJ.xtype='P' AND COM.text LIKE '%텍스트%' 위에 텍스트 부분에 찾으려는 테이블명, 함수명 등을 넣으시면 됩니다. XT.. 더보기
MSSQL 그룹별 최상위 데이터 가져오기 그룹별 최상위 데이터 가져오기 MSSQL에서 그룹별 최상위 데이터를 가져오는 방법은 JOIN을 이용한 방법, 서브쿼리를 이용한 방법 등 여러가지를 생각해볼 수 있겠습니다만, 여기서는 제가 가장 간단하고 이해하기 쉽다고 생각하는 순위함수와 OVER절을 이용한 방법에 대해 설명하겠습니다. 학습에 이용할 테이블과 데이터는 다음과 같습니다. SELECT Name, Month, SellCount FROM MonthlySales 테이블 전체 데이터 조회결과 최종목표/결과쿼리먼저 최종적인 쿼리를 보여드리고 단계적으로 설명하도록 하겠습니다. 위의 테이블 데이터에서 각 과일명 별로 판매량이 제일 많은 달의 로우만 가져오는 쿼리입니다.SELECT * FROM ( SELECT Name , Month , SellCount ,.. 더보기
MSSQL 서버의 디폴트 datetime 포맷 변경 웹 개발을 하면서 해외 프로젝트를 할 경우가 종종 있습니다. 우리나라는 기본적으로 yyyy-mm-dd 형식이니 해외 프로젝트도 동일하게 표시해 줘도 문제 없겠지 생각하지만, 예를 들어 러시아 프로젝트를 하다 보니 러시아인들은 dd-mm-yyyy를 날짜형식으로 사용하니 datetime 디폴트 포맷을 맞춰 달라고 합니다. 쉽게 얘기해서 GETDATE() 했을때 yyyy-mm-dd hh:mm:ss 를 dd-mm-yyyy hh:mm:ss 로 나오게 하고 싶은거죠. 그럼 개발자는 DB서버 또는 해당 DB의 디폴트 datetime 포맷을 바꾸려고 하게됩니다. 마이크로소프트 참고문서를 찾아보면 이렇습니다. 여기 내용을 보면 기본 날짜형식은 현재 언어 설정에 따라 결정되니까 SET LANGUAGE나 SET DATEFO.. 더보기