[sql study note] replace, substring, concat, if, case, cast

[sql study note] replace, substring, concat, if, case, cast

·

3 min read

replace를 이용하여 특정 문자를 다른 문자로 바꾸는 방법

REPLACE 함수는 컬럼 내의 특정 문자를 다른 문자로 바꿀 때 사용한다.

replace(바꿀 컬럼, 현재 값, 바꿀 값)

ex) '문곡리'라고 되어있는 주소를 '문가리'라고 바뀐 주소명으로 치환해주기

SELECT addr,
       REPLACE (addr, '문곡리', '문가리') "바뀐주소"
FROM food_orders 
WHERE addr LIKE '%문곡리%'

substr을 이용하여 원하는 문자만 남기기

SUBSTR 함수는 문자열 중 원하는 부분만 추출할 때 사용한다.

substring, substr 둘 다 사용가능

substr(조회 할 컬럼, 시작 위치, 글자 수)

ex) 음식점들의 주소를 전체가 아닌 ‘시도'만 나오도록

select addr "원래 주소",
       substr(addr, 1, 2) "시도"
from food_orders
where addr like '%서울특별시%'
  1. select addr "원래주소" : 원래 저장되어있던 주소를 '원래주소'라는 별명을 줘서 불러옴

  2. substr(addr, 1, 2) "시도" : substr은 특정한 문자만 뽑아주는 구문이다.

    addr 주소 컬럼에서 뽑아준다고 컬럼 지정, 1 첫번째 문자부터 뽑아옴, 2 글자수를 의미

-> 주소 컬럼에서 데이터를 뽑아올건데 첫번째 문자부터 두글자씩만 뽑아옴


concat을 이용하여 여러 컬럼의 값 하나로 합치기

CONCAT 함수는 여러 값을 하나로 합칠 때 사용한다.

붙일 수 있는 문자 : 컬럼, 한글, 영어, 숫자, 특수문자

concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)

ex) 서울시에 있는 음식점을 ‘[서울] 음식점명' 으로 수정

select restaurant_name "원래 이름",   
       addr "원래 주소",
       concat('[', substring(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
from food_orders
where addr like '%서울%'

concat(’[’, substring(addr, 1, 2), ‘]’, restaurant_name) “바뀐이름"

substring(addr, 1, 2) : 주소컬럼, 첫번째부터 두글자 뽑음

-> ‘[’, 지역, ‘]’ restaurant_name 네가지를 붙여줘 라는 뜻


If

조건을 지정해주는 문법으로 조건을 판단하여 조건이 참인 경우와 거짓인 경우에 따라 다른 결과를 반환한다.

if(조건, 참일 때 값, 거짓일 때 값)

ex) 'cuisine_type' 컬럼에 'Korean'이라는 값이 있다면 '한식', 그렇지 않다면 '기타'라는 값을 반환

select restaurant_name,
       cuisine_type "원래 음식 타입",
       if(cuisine_type='Korean', '한식', '기타') "음식 타입"
from food_orders

case

조건에 따라 다양한 결과를 반환할 수 있다.

여러개의 조건을 순차적으로 검사하며, 조건이 참인 경우 해당하는 결과를 반환한다.

case when 조건1 then 값(수식)1
     when 조건2 then 값(수식)2
     else 기본결과
end

case문은 case로 시작해서 조건을 when으로 주고, when에 속할 때 주는 값들을 then으로 적어주며 end로 끝낸다. when으로 조건을 주는 것이 중요

조건 사용가능 경우

  • 새로운 카테고리 만들기

  • 연산식 적용할 조건 지정하기

  • 다른 문법과 적용


cast 함수를 이용하여 데이터 타입 오류 해결하기

  1. AVG나 SUBSTR 등의 함수를 사용할 때 데이터 타입 오류가 발생

  2. 컬럼 옆에 ‘123’, ‘ABC’와 같은 문자가 보이는데 ABC는 숫자가 아닌 하나의 글자로 저장했다 라는 의미이다.

오류타입에 데이터 타입 오류가 뜬다면 문자, 숫자를 보며 데이터 타입을 변경해줘야 한다.

cast 함수

특정 데이터 타입을 다른 데이터 타입으로 변환하는데 사용

CAST(변경하고 싶은 컬럼이나 값 AS 원하는 데이터 타입)

문자를 숫자로 변경하기

문자로 저장된 숫자 값을 실제 숫자 값으로 변경하고 싶을 때는, 'AS DECIMAL'을 사용한다.

CAST('123' AS DECIMAL)

숫자를 문자로 변경하기

숫자 값을 문자로 변경하고 싶을 때는 'AS CHAR'을 사용한다.

CAST(123 AS CHAR)