CATCHV Blog

SQL Server 2012 New T-SQL 1 본문

Database/MS SQL

SQL Server 2012 New T-SQL 1

catchv 2013. 1. 29. 00:47
반응형

아래의 내용은 What's New in SQL Server 2012를 정리한 것입니다.

String Function

CONCAT

문자열 또는 모든 연산에서 NULL과 연산이 될 경우 결과는 NULL이 된다.

하지만 모든 쿼리 문자열에서 이런 형태를 구현할려면 ISNULL('문자열', '')로 처리를 해야 한다.

그래서 CONCAT이 나온 것 같다.

CREATE TABLE #Customer

(

    FirstName    VARCHAR(30) NULL

,    MiddleName    VARCHAR(30) NULL

,    LastName    VARCHAR(30) NULL

)

GO

 

INSERT INTO #Customer    

VALUES

    ('Rachel', 'Jane', 'Clements')

,    ('Rachel', NULL, 'Clements')

GO

 

SELECT    FirstName + ' ' + MiddleName + ' ' + LastName

FROM    #Customer

SELECT    ISNULL(FirstName, '') + ' ' + ISNULL(MiddleName, '') + ' ' + ISNULL(LastName, '')

FROM    #Customer

SELECT    CONCAT(FirstName + ' ', MiddleName + ' ', LastName)

FROM    #Customer

FORMAT

드디어 format 함수가 나왔다. C나 C# 등의 언어를 사용하시던 분들은 이 부분이 정말 필요 했을 것이다.

이전에는 여러 가지 방법으로 고생해서 만들었지만 이제는 간단하게 FROMAT 함수를 사용하면 될 것 같다.

이 함수는 .NET Framework의 함수이므로 .NET Framework가 설치 되어 있어야 사용할 수 있다.

문자열 포맷도 String.Format의 형태와 동일 하다. 하지만 파라미터 형태의 인자는 아니라서 여러 값을 넣을 수는 없다.

DECLARE @d    DATETIME    = GETDATE();

DECLARE @m    INT            = 16;

 

SELECT FORMAT( @d, 'dd/MM/yyyy'    , 'ko-KR') AS Result        -- 날짜 형식

SELECT FORMAT( @m, 'X'        , 'ko-KR') AS Result        -- 16진수 형식

SELECT FORMAT( @m, 'X4'        , 'ko-KR') AS Result        -- 16진수 형식(4자리 형태)

 

Datetime Function

EOMONTH

ERP 시스템이나 기간을 사용할대 월 단위의 조회가 많은데

지금까지는 보통 DATEADD로 처리를 했다 .

2012부터는 함수를 사용하면 될 것 같다.

DECLARE @d DATETIME = GETDATE();

SELECT @d, EOMONTH(@d), EOMONTH(@d, 1), EOMONTH(@d, 2)

DATEFROMPARTS

숫자로 날짜 형태를 만드는 함수다.

이전에는 '/'를 문자열로 조합했지만 이제 간단히 C#의 생성자 처럼 사용 할 수 있는 함수가 제공된다.

DECLARE @y INT, @m INT, @d INT

DECLARE @ymd DATETIME

SET @y = 2013

SET @m = 1

SET @d = 29

 

SET        @ymd = DATEFROMPARTS(@y, @m, @d)

SELECT    @ymd, DATEFROMPARTS(@y, @m, @d)

반응형
Comments