DB/MSSQL 18

[MSSQL] sp_who2 필터링 조회

접속세션 정보 확인 시 유용하게 사용하는 쿼리로,실제 사용할 때는 조회 쿼리를 다양하게 변형하여 조회 가능하다.응용해서 사용하세요! -- ----------------------------------------- -- sp_who2 필터링 조회 -- ----------------------------------------- CREATE TABLE #sp_who2 (   SPID INT,   Status VARCHAR(1000) NULL,   Login SYSNAME NULL,   HostName SYSNAME NULL,   BlkBy SYSNAME NULL,   DBName SYSNAME NULL,   Command VARCHAR(1000) NULL,   CPUTime INT NULL,   DiskIO ..

DB/MSSQL 2024.08.12

[MSSQL] 오라클의 다중 IN 절 -> MSSQL에서는 EXISTS로!

오라클에서는 다중 IN 절이 가능하다. MSSQL에서는 어떻게 쿼리를 작성해야할 지 고민한다면 "EXISTS"를 사용하면 된다. 다만, EXISTS 사용은 원하는 결과집합이 조회되는지 충분히 테스트해보고 적용바란다. 잘못 쿼리하면 필터링이 안되는 경우도 있으니 실수하지 말자. 확실히 하고 싶고 EXISTS 사용을 잘 모르겠으면 안전하게 JOIN문을 사용하도록! Oracle 예시 SELECT * FROM T1 WHERE (A,B) IN (SELECT A,B FROM T2 WHERE C='N') DELETE FROM T1 WHERE (A,B) IN (SELECT A,B FROM T2 WHERE C='N') MSSQL 예시SELECT A.* FROM T1 A WITH(NOLOCK) WHERE EXISTS (S..

DB/MSSQL 2024.07.30

[MSSQL] [날짜] 1.날짜 연산 함수(DATEADD, DATEDIFF)

자주 사용하면서 찾게되는 날짜함수를 정리해본다. 참고로, 요즘은 다들 글로벌 서비스를 하고 있어 날짜 반환 함수로 GETDATE()보다는 타임오프셋을 확인할 수 있는 SYSDATETIMEOFFSET()을 많이 사용하게 된다. 예제SQL에서는 SYSDATETIMEOFFSET()을 사용하였다.DATEADD: 날짜에 원하는 일수를 더하거나 빼서 출력해 주는 함수구문: DATEADD (datepart, number, date ) -- 지정된 date의 지정된 datepart에 간격을 더하여 새 datetime 값을 반환예제SQLSELECT DATEADD(DAY, -1, SYSDATETIMEOFFSET()) AS [어제] , DATEADD(DAY, 1, SYSDATETIMEOFFSET()) AS [내일] ; DA..

DB/MSSQL 2024.02.28

[MSSQL] 컬럼 문자열 합치기 (STRING_AGG(), STUFF())

여러 행의 컬럼 값을 하나의 문자열로 합칠 때 사용. 2017 이상 부터 지원되는 STRING_AGG()를 사용하는 것이 제일 간편하며, 아래 샘플 쿼리로 사용법에 대해 바로 확인 가능하다. 1) STRING_AGG() + SQL Server 2017 이상의 버전에서 지원 + GROUP BY 절과 함께 사용 가능 & ORDER BY 절을 사용하여 정렬이 가능하며 ORDER BY 절은 생략할 수 있음. + 형식) STRING_AGG("합칠 대상 컬럼명", "구분자") [WITHIN GROUP(ORDER BY "정렬하고자하는 컬럼명")] -- ---------------------------------------- -- #1. [LastName] 문자열 합치기 -- -----------------------..

DB/MSSQL 2024.02.27

[MSSQL] 이모지(Emoji) 저장 및 비교 조회하기

이모지(Emoji)는 그림 형태의 문자로, MSSQL에서 데이터 저장 시 유니코드를 지원하는 NVARCHAR 데이터타입을 사용하면 그대로 저장/조회가 가능하다. 다만 적재된 데이터와 이모지를 비교검색할 때 이슈가 발생할 수 있다. 그리고 유니크 인덱스 생성 등 중복체크 시 중복 이슈가 발생할 수 있다. 해결안) 기존 서비스 운영 환경에 영향이 없으면서 특정 비즈니스를 처리하기 위해서 NVARCHAR 데이터타입으로 저장이슈는 없으나 조회/중복체크 등으로 인한 이슈 발생 시 컬럼레벨 별도의 Collation을 설정하는 것으로 대응이 가능하다. 참고)-- 이모지 테스트 샘플 CREATE TABLE dbo.emojiTest ( id INT IDENTITY, col1 NVARCHAR(256), -- COLLATE..

DB/MSSQL 2024.02.23

[MSSQL] DB서버/컬럼 레벨 셋팅된 Collation 조회 및 Collation level

Collation은 데이터에 대한 정렬 규칙과 대/소문자 및 악센트 구분 속성 등을 제공한다. (char, varchar, nchar, nvarchar 등의 문자 데이터 형식과 함께 사용) SQL Server 인스턴스의 기본 데이터 정렬(Collation)은 설치 중에 정의되므로 여러 언어를 반영하는 문자 데이터를 저장해야 하는 경우 데이터 정렬 설정을 신중하게 지정해야 한다. 보통 한국에서는 Korean_Wansung_CI_AS를 사용하게 되는데, 배포 지역에 따라 다르게 설정되어야 하는 경우 현지에서 사용하는 Collation을 확인하여 셋팅을 하게 된다. 현재 셋팅된 DB 서버/컬럼 셋팅을 조회해보면 다음과 같다. -- MSSQL에서 지원하는 Collation 전체 조회 SELECT * FROM f..

DB/MSSQL 2024.02.21

[MS-SQL] CONVERT()함수의 스타일 번호별 날짜 변환 형식 

-- 자주 사용하는 스타일 SELECT CONVERT(CHAR(8), GETDATE(), 112) -- 20240123 SELECT CONVERT(CHAR(19), GETDATE(), 121) -- 2024-01-23 16:39:50.623 스타일번호 쿼리 결과 코드 0 CONVERT(CHAR(19), GETDATE(), 0) 01 23 2024 4:39PM MM DD YYYY H:MM 1 CONVERT(CHAR(10), GETDATE(), 1) 01/23/24 MM/DD/YYYY 2 CONVERT(CHAR(8), GETDATE(), 2) 24.01.23 YY.MM.DD 3 CONVERT(CHAR(8), GETDATE(), 3) 23/01/24 DD/MM/YY 4 CONVERT(CHAR(8), GETDA..

DB/MSSQL 2024.01.23

[MS-SQL] 동적쿼리에서 OUTPUT Parameter 사용 예제

DMV를 활용하여 특정 데이터를 조회 시 사용하게 된 쿼리로, 아래 예제를 통해 바로 실행 및 확인 가능하다. -- OUTPUT 파라미터 1개 지정 시 BEGIN DECLARE @sql NVARCHAR(1000) DECLARE @param NVARCHAR(500) DECLARE @result DATETIMEOFFSET(3) SET @sql = 'SELECT @Today = SYSDATETIMEOFFSET()' SET @param = '@Today DATETIMEOFFSET(3) OUTPUT' EXEC SP_EXECUTESQL @sql, @param, @Today=@result OUTPUT SELECT @result AS [Today] END-- OUTPUT 파라미터 여러개 지정 시 BEGIN DECLAR..

DB/MSSQL 2024.01.23
320x100