올림 CEILING()
반올림 ROUND()
내림 ROUND() , FLOOR()
CEILING ( numeric_expression )
ROUND ( numeric_expression , length [ ,function ] )
FLOOR ( numeric_expression )
CEILING 예제
다음 예에서는 값이 각각 양수, 음수, 0인 CEILING 함수를 보여 줍니다.
SELECT CEILING($123.45), CEILING($-123.45), CEILING($0.0)
GO
--------- --------- -------------------------
124.00 -123.00 0.00
(1 row(s) affected)
FLOOR 예제
다음 예에서는 FLOOR 함수의 인수로 양수, 음수 및 통화 값을 넣고 계산합니다.
SELECT FLOOR(123.45), FLOOR(-123.45), FLOOR($123.45)
--------- --------- -----------
123 -124 123.0000
ROUND 함수
ROUND는 항상 하나의 값을 반환합니다. length가 음수이고 소수점 전의 자릿수보다 클 경우 ROUND는 0을 반환합니다.
예 |
결과 |
ROUND(748.58, -4) |
0 |
length가 음수일 경우 ROUND는 데이터 형식에 상관없이 반올림한 numeric_expression을 반환합니다.
예 |
결과 |
ROUND(748.58, -1) |
750.00 |
ROUND(748.58, -2) |
700.00 |
ROUND(748.58, -3) |
1000.00 |
length
numeric_expression을 반올림하는 전체 자릿수입니다. length는 tinyint, smallint 또는 int여야 합니다. length가 양수일 경우 numeric_expression은 length에서 지정한 소수 자릿수로 반올림됩니다. length가 음수일 경우 numeric_expression은 length에서 지정한 대로 소수점의 왼쪽에서 반올림됩니다.
function
수행할 연산의 종류입니다. function은 tinyint, smallint 또는 int여야 합니다. function을 생략하거나 값이 0(기본값)일 경우 numeric_expression은 반올림됩니다. 0 이외의 값을 지정하면 numeric_expression이 잘립니다.
ROUND 예제
마지막 자릿수가 항상 어림값인 ROUND를 사용하는 두 개의 식을 보여 줍니다.
SELECT ROUND(123.9994, 3), ROUND(123.9995, 3)
GO
----------- -----------
123.9990 124.0000
반올림과 어림값를 보여 줍니다.
SELECT ROUND(123.4545, 2);
GO
SELECT ROUND(123.45, -2);GO
----------
123.4500
(1 row(s) affected)
--------
100.00
(1 row(s) affected)
두 개의 SELECT 문을 사용하여 반올림과 자르기 간의 차이를 보여 줍니다. 첫 번째 문은 결과를 반올림하고 두 번째 문은 결과를 자릅니다.
SELECT ROUND(150.75, 0);
GO
SELECT ROUND(150.75, 0, 1);
GO
--------
151.00
(1 row(s) affected)
--------
150.00
(1 row(s) affected)
[MSDN LINK]
CEILING : http://msdn2.microsoft.com/ko-kr/library/ms189818.aspx
ROUND : http://msdn2.microsoft.com/ko-kr/library/ms175003.aspx
FLOOR : http://msdn2.microsoft.com/ko-kr/library/ms178531.aspx
|
|
DECLARE @T TABLE(I INT IDENTITY(1,1), J INT)
INSERT INTO @T (J)
SELECT A
FROM
(
SELECT 1 A
첫번째 INSERT 처리이후 테이블 현황
UNION ALL
SELECT 2
UNION ALL
SELECT 3
UNION ALL
SELECT 4
UNION ALL
SELECT 5
UNION ALL
SELECT 6
) N
SELECT * FROM @T
두번째 INSERT 처리이후 테이블 현황
INSERT INTO @T (J)
SELECT A
FROM
(
SELECT 1 A
UNION ALL
SELECT 2
UNION ALL
SELECT 3
) N
SELECT * FROM @D
* SCOPE_IDENTITY()
SELECT SCOPE_IDENTITY()
ID 값 가져온 결과
-- 같은 범위에 있는 마지막 ID 값을 return 해준다.
* @@IDENTITY
SELECT @@IDENTITY
-- 같은 세션에 있는 마지막 ID 값을 return 해준다.
* SCOPE_IDENTITY() 와 @@IDENTITY의 차이점 설명
A 테이블 과 B 테이블이 있다.
A 테이블에 Insert 트리거가 정의되어있고
A 테이블에 삽입시 B테이블에 동일 삽입이 진행된다.
이때 A 테이블에 값을 입력하면
SCOPE_IDENTITY() 는 A 테이블의 마지막 ID 값을 return 해주고
@@IDENTITY 는 B 테이블의 마지막 ID 값을 return 해준다.
* IDENT_CURRENT()
SELECT IDENT_CURRENT('identity 필드가 있는 테이블')
-- identity 필드가 있는테이블의 마지막 identity값을 return 해준다.
관련 링크
* IDENT_CURRENT()
http://msdn2.microsoft.com/ko-kr/library/ms175098.aspx
* SCOPE_IDENTITY()
http://msdn2.microsoft.com/ko-kr/library/ms190315.aspx
━━━━━━━━━━━━━━━
by 한상국(han3925)
MAIL han3925@gmail.com
han3925@hotmail.com
BLOG pointnet.tistory.com
━━━━━━━━━━━━━━━
구로디지털단지역 3번 출구에서 나와 찾아오면 됩니다.
건물명은 대륭포스트타워2차 구요 지하 1층 세미나실입니다.