- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Observable
- substr
- barplot
- 오블완
- SWIFT
- ios
- 명령어
- swiftUI
- ReLU
- Python
- rest api
- Request
- 연산자
- scheduledTimer
- MVC
- Optional
- decode
- deeplearning
- 딥러닝
- SQL
- HTTP
- sigmoid
- 티스토리챌린지
- tapply
- 시각화
- cocoapods
- r
- struct
- rxswift
- Linux
iOS 개발 기록 블로그
SQL 형 변환 (문자형, 숫자형, 날짜형) 본문
변환 함수
to_char, to_number, to_date
데이터 타입을 변환하는 함수입니다.
테스트 (실행) 환경
웹에서 실행해볼 수 있는 사이트에서 코드를 실행해보았습니다.
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
SQL Tryit Editor v1.6
WebSQL stores a Database locally, on the user's computer. Each user gets their own Database object. WebSQL is supported in Chrome, Safari, Opera, and Edge(79). If you use another browser you will still be able to use our Try SQL Editor, but a different ver
www.w3schools.com
데이터 베이스 샘플도 제공하고 있으면 우측에 Restore Database 버튼을 눌러서 'Products'라는 DB를 불러와서 테스트하였습니다.
구조는 다음과 같고 77행이 있습니다.

샘플 데이터를 불러와서 임의의 코드를 실행해봅시다.

SQL은 기본적으로 자동으로 형 변환을 해주기는 하지만
성능(속도) 면에서 가급적 데이터 타입을 맞춰 SQL 문을 작성해주는 것이 좋습니다.
예를 들어 Price를 문자형으로 변환하고 싶다면
SELECT ProductName, to_char(Price)
FROM Products
WHERE Price = '14'
와 같이 사용하면 됩니다.
이유는 모르겠지만 위 사이트에서는 to_char(Price)가 되지 않지만 실제 SQL 환경에서 하면 잘 동작합니다.
아래의 사이트에서 다른 코드를 실행해보았습니다.
SQL Test
Free Online SQL Test Tool
sqltest.net
코드

결과

날짜 포맷
- 년도: RRRR, RR, YYYY, YY
- 달: MM, MON
- 일: dd
- 요일: day, dy
- 시간: HH, HH24
- 분: MI
- 초: SS
- 주: WW, IW
예제) 오늘부터 100달 뒤의 날짜의 요일을 출력하세요
select to_char(add_months(sysdate, 100), 'day')
from dual;

to_date
예제) RR/MM/DD 형식으로 현재 세션의 날짜형식을 변경하시오
방법 1)
Alter session set nls_date_format = 'RR/MM/DD';
방법 2)
Select ename, hiredate
From emp
Where to_char(hiredate, 'RR/MM/DD') = '81/09/10';
설명)
방법 1은 오라클을 실행할 때마다 입력해서 날짜 형식을 바꿔줘야 합니다.
하지만 방법 2는 그럴 필요가 없습니다.
그런데, 방법 2와 같이 코딩하는 것은 악성 SQL 이다SQL이다. Where 절의 좌변을 가공하면 성능이 느려 집니다.
따라서 좌변을 가공하는 것이 아니라 아래와 같이 우변을 가공 해야 합니다.
방법 3)
Select ename, hiredate
From emp
Where hiredate = to_date('81/09/10', 'RR/MM/DD') ;
이렇게 하면 alter session을을 쓸 필요도 없고 to_char 을 쓸 필요도 없으며 성능도 빠릅니다.
to_number
숫자형으로 형을 변환시켜주는 함수
예제) 테이블을 생성하고 값을 Insert 해주고 데이터를 조회해보세요.
create table test
( ename varchar2(20),
sal varchar2(20) );
>> test라는 테이블 생성, ename이라는 varchar2 형 칼럼과 sal이라는 varchar2 형식의 컬럼 생성
insert into test values('scott', '3000')
insert into test values('smith', '1500')
commit;
>> 마찬가지로 문자형으로 데이터 삽입
select *
from test
where sal = 3000;
>> 조회할 때 위와 같이 '3000'이 아닌 3000. 즉, 숫자형으로 조회를 하면 내부적으로 문자형 데이터를 숫자형으로 자동으로 형 변환시키기 때문에 악성 SQL문입니다.
'SQL' 카테고리의 다른 글
SQL 그룹함수 사용 방법 (max, min, avg...) (0) | 2022.02.15 |
---|---|
SQL nvl2, decode, case 문법 (0) | 2022.01.06 |
SQL의 숫자 함수, 날짜 계산 함수 (0) | 2021.12.15 |
SQL 논리 연산자, 연산자 우선순위와 다양한 문자 함수들 (upper, substr, instr, trim 등) (0) | 2021.12.06 |
SQL 연산자 종류, between, like, in, is null 연산자 (0) | 2021.11.30 |