테이블 생성...반드시 실행 후 아래 예제 볼것...
/** 수치 연산 함수
**/
--
CEILING 무조건 올림...
SELECT CEILING(29.1),
CEILING(29.9), CEILING(0.9), CEILING(0.1)
SELECT SANAME, CEILING(SAPAY*1.2356781),
SAPAY*1.2356781
FROM SAWON
-- ROUND 반올림
SELECT ROUND(123456.34567, 2), ROUND(123456.34567, 0), ROUND(123456.34567, -2)
--
결과 123456.35000 123456.00000 123500.00000
SELECT ROUND(49.0, -1), ROUND(49.0, -2), ROUND(50.0,
-2)
-- 결과 50.0 .0 100.0
-- FLOOR 무조건 내림..
SELECT
FLOOR(0.1), FLOOR(0.5), FLOOR(0.9),
FLOOR(1.0), FLOOR(1.1), FLOOR(1.9),
FLOOR(29.1)
-- 결과
0 0 0
1 1 1 29
/** 문자열 함수 **/
SELECT 10 + 10 -- 20... 산술 연산자
SELECT '10' + '10' -- 1010.. 연결 연산자
SELECT '10' + 10 -- 20... 문자열이 자동 형변환으로 산술 연산자가 됨.
-- 다음과 같이 출력하라....
-- 사번 1 엄정화님은 직위가 사원이시고
성별은 여자입니다.
-- 사번 2 룰라님은 직위가 대리이시고 성별은 여자입니다.
SELECT '사번 ' + CONVERT(VARCHAR(3), SABUN) + SPACE(1) +
SANAME + '님은 직위가 ' + SAJOB + '이시고 성별은 ' + SASEX + '자입니다.'
FROM
SAWON;
-- ASCII...아스키 코드값
반환...
SELECT ASCII('A') -- 65 반환
-- CHAR...아스키 코드를 문자로 변환
SELECT
CHAR(65) --
A
-- CHARINDEX...지정한 식의 시작 위치 값
반환
SELECT CHARINDEX('-',
'12345-12345') -- 6
반환
SELECT CHARINDEX('2', '12345-12345',
3) -- 8 반환..2는 2번째와 8번째 두군데지만 시작이 3번째 위치부터이므로 8
반환..
-- LEFT, RIGHT, SUBSTRING
SELECT
LEFT('ABCDEFG', 4), RIGHT('ABCDEFG', 3), SUBSTRING('ABCDEFG', 3, 3)
-- 결과
ABCD EFG CDE
-- 다음을
출력하라
/*
고객이름 전화(국번)
**************************
엄정화 5123
김미화 223
*/
SELECT
GONAME '고객이름', LEFT(GOTEL, CHARINDEX('-',GOTEL)-1) '전화번호(국번)'
FROM
GOGEK
-- 다음을
출력하라..
/*
이름 주소(구)
******************
엄정화 관악구
룰라
영등포구
*/
SELECT SANAME '이름',
SUBSTRING( SAADDR,
CHARINDEX(' ', SAADDR)+1, --
SUBSTRING 할 시작점...첫번째 ' ' 위치
+1
CHARINDEX('
', SAADDR, CHARINDEX(' ', SAADDR)+1) - CHARINDEX(' ',
SAADDR)
-- SUBSRING으로 자를 자리수....두번째 ' ' 위치에서
첫번째 ' ' 위치빼면 중간 문자열 길이 나온다..
) '주소(구)'
FROM
SAWON;
/* OR */
SELECT SANAME '이름',
LEFT(
SUBSTRING(SAADDR, CHARINDEX(' ', SAADDR)+1, 10),
-- 첫번째 공백문자 + 1 위치에서 뒤로 10문자
가져온다...영등포구
XXXXX
CHARINDEX(' ', SUBSTRING(SAADDR, CHARINDEX(' ', SAADDR) +1, 10)) -
1
-- 영등포구 XXXXX 에서 첫번째 '
' 위치를 구해서 1을 빼면 중간 문자열 길이값이다..
)
'주소(구)'
-- 영등포구 XXXXX 에서
CHARINDEX에서 ' ' 구한 위치 값..즉 중간 문자열 길이만큼 자른다...
FROM SAWON;
-- REPLACE
SELECT
REPLACE('ABCDEF', 'ABC', '123'); -- 결과 123DEF
-- 고객 테이블에서 다음을
출력하라..
/*
이름 생년월일 성별
****************************
이주일 45년
11월 13일 남자
*/
SELECT GONAME
'이름',
SUBSTRING(GOJUMIN,
1, 2) + '년 ' + SUBSTRING(GOJUMIN, 3, 2) + '월 ' + SUBSTRING(GOJUMIN, 5, 2) + '일'
AS
'생년월일',
REPLACE(REPLACE(SUBSTRING(GOJUMIN, 8, 1), '1', '남자'), '2', '여자') '성별'
FROM
GOGEK;
SELECT * FROM GOGEK;
'IT_DBMS > MSSQL' 카테고리의 다른 글
[Transact-SQL] 외부조인(outer join) - Right join (0) | 2006.03.06 |
---|---|
[Transact-SQL] 외부조인(outer join) - Left Join (0) | 2006.03.06 |
[Transact-SQL] 내부조인(inner join) (0) | 2006.03.06 |
내부조인과 외부조인의 차이점 (0) | 2006.03.06 |
select문 연습 1 (0) | 2006.03.03 |