Blue___
코딩배우는 학생🌎
Blue___
전체 방문자
오늘
어제
  • 코딩배우는 학생🧀 (242)
    • Algorithms (145)
      • BOJ[Java] (107)
      • Programmers[Java] (32)
      • Coding_Contest (3)
    • Web (22)
      • .NET Core C# (2)
      • Java (1)
      • Oracle SQL (7)
      • Web-ProJect (3)
      • Error처리 (1)
      • Web지식 (4)
      • Javascript (1)
      • Vue (3)
    • Git (4)
    • Java_beginner(Repl.it) (55)
      • Auto-Graded-Course(AP CS A) (54)
    • 프로젝트 직딩일기 (3)
    • Hanyang_Assignment (0)
    • 이모저모 (4)
      • 잡담 (1)
      • 2021 오픈소스 컨트리뷰터 아카데미 (1)
      • DDD - 6기! (1)
    • 북리뷰 (1)
      • 리팩토링 2판 (1)
      • 클린코드 (0)

블로그 메뉴

  • 🐰GITHUB
  • ☘️포트폴리오
  • 🌸MBC개발_투표 2022
  • 🍭MBC_APP

공지사항

인기 글

태그

  • auto-graded course
  • programmers
  • 코딩
  • java basic
  • coding
  • Bakjoon
  • Java
  • 알고리즘
  • Java tutorial
  • algorithm
  • 코딩배우는 학생
  • 코딩배우는학생
  • 백준
  • 프로그래머스
  • REPL
  • 자바
  • repl.it
  • 프로그래밍
  • 레플릿
  • AP CS A

최근 댓글

최근 글

티스토리

hELLO
Blue___

코딩배우는 학생🌎

[SQL] 변환함수,서식지정자
Web/Oracle SQL

[SQL] 변환함수,서식지정자

2020. 3. 27. 14:19

1. 변환 함수

- 형변환이라고도 한다

- 숫자, 문자, 날짜의 데이터를 서로 형변환 한다.

 

  • to_number : NUMBER포맷(서식)을 가진 VARCHAR2 -> NUMBER ex)'123' ->123
  • to_char : NUMBER,DATE -> 원하는 포맷(서식)의 VARCHAR2
  • to_date : DATE포맷(서식)을 가진 VARCHAR2 -> DATE

1-1 tochar(number)

  to_char(number)

  to_char(number,format)

 

두가지 형태로 사용할 수 있다.

 

**숫자 서식 지정 문자

0 : 숫자가 들어갈 자리를 확보, 남는 자리는 0으로 LPAD한다
9 : 숫자가 들어갈 자리를 확보, 남는 자리는 공백으로 LPAD한다
. : 소수점 구분 문자 추가(정수부, 소수부)
, : 자릿수 구분 문자 추가
L : 세계통화기호 추가(설정된 통화를 따라감,Locale)
$ : 통화기호 $추가

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
--날짜함수, DATETIME--
 --sysdate 
 
SELECT sysdate FROM dual; --오늘날짜 출력 20/3/24 :년원일
 
--날짜시간 타입->문자 타입(서식지정)
SELECT to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') now FROM dual; 
 
--MONTHS_BETWEEN : 개월 수 차이
SELECT months_between('20-01-01','20-02-01') A FROM dual; --왼쪽-오른쪽 (1=1개월)
SELECT months_between('20-01-01','20-02-01') A,round(months_between('20-01-01','20-02-15'),2) B 
FROM dual; --round로 반올림
 
--next_day : 지정된 요일이 다가오는 날짜 구하기
SELECT next_day(sysdate,'금') FROM dual;
 
 
--trunc 함수 (버리기)--trunc는 매개변수로 숫자or날짜가능 ** 중요(시간을00시로 버린다)
--trunc(datetime)
SELECT sysdate,to_char(sysdate,'YYYY/MM/DD HH24:MI:SS'),to_char(trunc(sysdate),'YYYY/MM/DD HH24:MI:SS') 
FROM dual;
--20/03/24    2020/03/24 19:43:17    2020/03/24 00:00:00
 
--보이는 결과는 같지만 시간이 포함되어 서로 다른 값을 가진다
SELECT sysdate,trunc(sysdate) FROM dual;
 
 
 
-- 변환함수 --
--2개 방법
--to_char(number)
--to_char(number,fmt) : 서식문자를 이용한 변환 --서식지정
 
SELECT 12345 "0" from dual; --숫자타입
SELECT to_char(12345) "1" from dual; --문자타입
SELECT to_char(12345) "0", length(to_char(12345)) "1" from dual; --길이도 반환
SELECT length(12345) from dual; --문자로 안바꿔도 5가나온다(필요없다) --원래 숫자만 들어갈 수 있지만 
자동형변환된다
 
    --서식지정
    SELECT  to_char(12345,'99999') as ff FROM dual; --#이 나오면 입력값보다 작은값이어서 표시가 되지않는다는 오류
    SELECT  trim(to_char(12345,'999999999')) as ff FROM dual; --9는 숫자가 들어갈수있는 1자리 라는뜻이다
(없으면 공백)
    SELECT to_char(12345,'000000000000') FROM dual; -- 0으로 전체 표현한 뒤 숫자를 채움
    SELECT to_char(12345,'999000000000') FROM dual;
 
 
    SELECT to_char(12345.6789)"1", to_char(12345.6789,'99999.9') "2" ,
         to_char(12345.6789,'9999999.99')"3",
         to_char(12345.6789,'9,999,999.99')"4", -->알아서 ,(comma)도 붙음
         to_char(12345.6789,'9,999,999.999999') "5" -->소수점 아래 형식은 0으로 알아서 채워서 반환
    FROM dual; --12345.6789 | 12345.7 --> 편하게 서식대로나온다
    
    SELECT 
        to_char(12345) "1",
        to_char(12345,'$9999999') "2", --> $를 앞에 붙여주면 $가 생긴다
        to_char(12345,'L9999999') "3", --> L을 붙이면 ₩이 생긴다.(Locale의 약자)--언어와 환경에 대한 맞는 값이 반환
        trim(to_char(12345,'L9999999')) "4"
    FROM dual;
 
    
--to_char(datetime)
SELECT 
 --   sysdate,
--    to_char(sysdate,'SCC'), --21 --세기출력
--    to_char(to_date('369/1/7'),'SCC'), --날짜로 변환해서 넣으면 인식은 됨
--    to_char(sysdate,'YEAR'),--TWENTY TWENTY
--    to_char(sysdate,'Year'), --Twenty Twenty
--    to_char(sysdate,'YYYY'), --2020
--    to_char(sysdate,'YY'), --20
--    to_char(sysdate,'YYY'), --020
--    to_char(sysdate,'Y') --0
--    to_char(sysdate,'YYYYY') --20200 --0이 하나 더 붙었음 (추가적인 연도 X)그냥  YYYY Y랑 같다
--    to_char(sysdate,'MM'), --03
--    to_char(sysdate,'MONTH'), --3월
--    to_char(sysdate,'MON') --3월 (약어지만 한글이라 똑같다)
--    to_char(sysdate,'Q'), --1(분기를 나타냄)
--    to_char(sysdate,'DD'), --24 (한달단위 일수)
--    to_char(sysdate,'D'), --3(일주일 단위 일수)
--    to_char(sysdate,'DDD'), --084(일년단위 일수)
--    to_char(sysdate,'DAY'), --화요일
--    to_char(sysdate,'DY') --화
--    to_char(sysdate, 'HH'), --09
      to_char(sysdate, 'HH12'), --09(시)
      to_char(sysdate, 'HH24'), --21(시)
      to_char(sysdate, 'MI'), --36(분)
      to_char(sysdate, 'SS'), -- 25(초)     
      to_char(sysdate, 'AM'), -- 오후
      to_char(sysdate, 'PM'), --오후
--    to_char(sysdate,'FF') --sysdate는 밀리초가 저장되어있지 않기때문에 에러가 발생한다
      to_char(systimestamp,'FF') --483000(밀리초)        
FROM dual;
 
SELECT systimestamp, sysdate FROM dual;--20/03/24 21:43:34.399000000 +09:00(timestamp) --타임존이 들어간다
                                     --20/03/24(sysdate)
--많이 쓰는형태   
 
SELECT 
    to_char(sysdate,'YYYY/MM/DD DAY HH24:MI:SS')
FROM dual;
 
--Q응용
SELECT * FROM emp WHERE to_char(hiredate,'Q')=3; --3분기 반환
 
 
 

 

반응형
저작자표시 (새창열림)

'Web > Oracle SQL' 카테고리의 다른 글

[PROGRAMMER Level-4] 입양 시각 구하기(2)[Oracle]  (0) 2020.03.29
[PROGRAMMERS Level 4] 우유와 요거트가 담긴 장바구니(Summer/Winter Coding(2019)) [Oracle]  (0) 2020.03.29
[SQL] 함수(Functions)  (0) 2020.03.27
[SQL] 정의와 기본문법  (0) 2020.03.27
[mySQL] Workbench에서 csv 파일 import 하기 [Mac]  (4) 2019.11.26
    'Web/Oracle SQL' 카테고리의 다른 글
    • [PROGRAMMER Level-4] 입양 시각 구하기(2)[Oracle]
    • [PROGRAMMERS Level 4] 우유와 요거트가 담긴 장바구니(Summer/Winter Coding(2019)) [Oracle]
    • [SQL] 함수(Functions)
    • [SQL] 정의와 기본문법
    Blue___
    Blue___
    완전 연소한 불은 재를 남기지않는다 : 코딩배우는학생 🌎

    티스토리툴바