AI SCHOOL/SQL

[SQL] 숫자, 문자열 함수

moru_xz 2023. 1. 25. 10:42

SQL 함수란?

미리 정의된 기능 모음, 단일 행 함수와 그룹 함수가 있음

BIGQUERY 데이터 타입 함수

- 숫자 : INT

- 문자 : STRING

 

숫자 함수

ROUND

round 함수는 해당 항목 레코드의 숫자를 반올림 하여 출력하는 함수

 

 

빅쿼리에서는 % 사용 불가 -> mod 사용

float 나누기 int 불가능 -> 형변환 해야함 

POWER

power 함수는 해당 항목 레코드의 숫자를 제곱하여 출력하는 함수

select power(숫자,승수)

select power(10,3)

 

SQRT

sqrt 함수는 해당 항목 레코드의 제곱근을 출력하는 함수

select sqrt(숫자)

select sqrt(10)

 

문자열 함수

SURSTR

문자열의 일부만 출력할 수 있음

select substr(문자열, 시작 위치, 길이)

select substr('hello world',1,5)

LEFT

문자열을 왼쪽에서 얼만큼 자를 지 설정한 후 조회할 수 있음

select substr('hello world',1,5)

select left('064-000-0000',3)

0부터 해도 상관 없음(1부터 한 것과 결과는 같음)

RIGHT

문자열을 오른쪽에서 얼만큼 자를 지 설정한 후 조회할 수 있음

select right(문자열,길이)

select right('064-000-1234',4)

CONCAT

여러 문자열을 하나로 연결할 수 있음

select concat('paul', '-', 'lab')

select concat(first_name, ',', last_name)
from `thelook_ecommerce.users`;
select 'first_name'||'last_name'

select concat(first_name, ',', last_name)
from `thelook_ecommerce.users`;

연결연산자(||)로도 연결이 가능

LOWER

문자열을 모두 소문자로 변경

select lower('Abc')

select lower(last_name)
from `thelook_ecommerce.users`;

UPPER

문자열을 모두 대문자로 변경

select upper('Abc')

INITCAP

앞에 문자만 대문자로 만들어 줌

select upper('Abc')

REPLACE

바꾸고 싶은 값으로 대상 값을 교체

select replace('hello world', 'world', 'sql')

select replace(gender, 'M', 'Man')
from `thelook_ecommerce.users`;

LENGTH

문자열의 길이를 출력 -> COUNT와 비교해서 기억

select length('hello world')

select length(first_name)
from `thelook_ecommerce.users`;

INSTR

문자열의 위치를 구함 -> 여기서 INDEX 는 1부터 시작

프로그래밍 언어는 0부터 시작 

select left(email, instr('abcdef@gmail.com','@') - 1)
from `thelook_ecommerce.users`

IFNULL

IFNULL은 해당 칼럼에 NULL값이 있는 경우 다른 값으로 채워 넣을 수 있음

select IFNULL(name, '담당자 지정 안됨')
from `weniv.weniv_event`

형변환

문자 -> 숫자

- 문자 -> 자연수(integer)

- 문자 -> float

 

숫자 -> 문자열

- 숫자(integer) -> 문자

- 숫자(float) -> 문자

- true, false -> 문자

 

날짜 

날짜 타입 : DATE / DATETIME

문자열 -> DATE

문자열 -> DATETIME

 

# CAST(데이터 AS 타입명)

# 문자열 -> 숫자로 바꾸는거
# 문자열 -> 자연수(INTEGER)
# 문자열 -> FLOAT

select CAST('123' AS INT64)
select '123' + '123' # 에러
select CAST('123' AS INT64) + CAST('123' AS INT64)
select CAST('123.123' AS FLOAT64)
select CAST('123' AS NUMERIC)
select CAST('123.123' AS NUMERIC)

# -> 문자열
# 숫자(INTEGER) -> 문자
# 숫자(FLOAT) -> 문자
# true, false -> 문자
select CAST(123 AS STRING)
select CAST(123.123 AS STRING)
select CAST(true AS STRING)
select CAST(false AS STRING)
select CAST(NULL AS STRING)