MySQL 에서는 문자열의 처리가 더욱 중요하다.
문자열을 처리하는 함수 몇 가지에 대해 알아본다.
먼저 concat() 이라는 함수가 있다. concat()함수는 선택한 데이터들을 합쳐주는 역할을 한다.
예를들어 ,
select concat('hello', 'welcome'); 이라고 입력했을 때,
아래 출력되는 것은 'hello'와 'welcome'의 문자열이 합쳐져,
hellowelcome 이라고 출력된다.
이를 테이블에서 작업해보겠다.
테이블을 만들고 데이터는 따로 넣어서 화면에 출력해봤다.
books 라는 테이블이고 , 여기에서 author_fname 컬럼과 author_lname 의 컬럼의 데이터를 합쳐보겠다.
1
2
3
4
5
|
select concat(author_fname,' ', author_lname) -- full name 만들어서 화면에 표시
from books;
|
cs |
concat은 두가지만 합칠 수 있는것이 아니고 , 여러가지를 합치는 것이 가능하다, 위에서는 공백 문자로 fname과 lname
사이를 띄어쓰기 해주었다. 위를 실행하면
이렇게 실행화면이 나온다. 두 컬럼의 데이터를 합쳐 하나로 만드는데, 새로운 컬럼으로 보여준다.
이때 컬럼명은 위의 select 뒤의 문장으로 만들어져, 보기가 힘들다.
이때 컬럼명을 원하는 대로 바꾸려면,
concat을 할때 as 원하는 컬럼명을 붙여준다.
ex) select concat(author_fname,' ', author_lname) as 'full name'
컬럼명이 바뀐걸 볼 수 있다. concat이 아니어도 데이터처리에서 as 컬럼명으로 컬럼명을 바꿔서 출력이 가능하다.
** concat_ws()
위 함수는 데이터를 합칠때 중간에 문자열이나, 다른 기호들을 넣으면서 합칠때 사용한다.
예를들어
select concat_ws(' : ', title, author_fname, author_lname) from books; 로 실행을 하면
위와 같이 데이터 사이에 : 이 들어가는 것을 볼 수 있다.
다음으로는 substring() 함수가 있다.
이 함수는 문자열을 슬라이싱하는 기능하는 가지고 있다.
예를들어
select substring('Hello World', 1, 4) ;
를 실행한다면,
첫번째부터 네번째까지의 문자인 Hell 이 된다.
python 은 0부터 인덱스 번호가 들어갔지만, SQL은 1부터 들어가기 때문에 세는 법이 다르다..
select substring('Hello World', 7 ) ;
7번째 문자부터 끝까지 조회하는 방법이다.
테이블에 적용시켜 보겠다.
1
2
|
select substring(title, 1, 10) as title, author_fname, released_year, pages
from books;
|
cs |
위의 코드는 books테이블의 타이틀 컬럼 데이터를 첫번째부터 열번째까지 가져와, title컬럼명으로 데이터를 나타내고, author_fname, released_year, pages 컬럼도 같이 표시하라는 뜻이다.
실행화면은
네개의 컬럼이 조회되고, title 컬럼의 데이터는 슬라이싱되어 조회된 것을 알 수 있다.
다음은 문자열 데이터를 바꾸는 replace() 함수가 있다.
말 그대로 문자열의 한 부분을 우리가 원하는 문자열로 바꿀수 있다.
예를들어보면,
select replace('What the hell', 'hell', '***');
이 코드는 What the hell 에서 hell 을 *** 으로 바꾸라는 코드이다. 실행을 하면
What the *** 으로 출력이 된다.
공백 문자나 기호도 가능하다.
select replace('cheese bread coffee milk', ' ', ',') ;
위는 cheese bread coffee milk 사이의 공백을 , 로 바꾸라는 것으로, 실행시
cheese,bread,coffee,milk 로 문자열이 바뀐다.
테이블에 적용시켜 보겠다.
1
2
|
select replace (title, 'e', '3') as title
from books;
|
cs |
title컬럼의 문자열 중 e를 3으로 바꾸고 title 컬럼명으로 출력한다.
영어 알파벳 e 가 3으로 변한것을 알 수 있다.
다음으로 문자열의 순서를 거꾸로 바꿔주는 reverse() 함수이다.
reverse()함수는 간단하게 해본다.
reverse() 의 예로는,
select reverse('hello World');
위와 같이 입력을 하면,
제일 뒷 글자인 d 부터 시작하여, h까지 거꾸로 나오게 된다.
select reverse(author_fname)
from books;
이런식으로 reverse함수안에 컬럼명을 넣게 되면,
해당 컬럼의 각 행마다 들어있는 문자열이 전부 순서가 뒤바뀐다. 뒤에서부터로..
다음은 문자열의 길이를 알려주는 char_length()함수이다.
select char_length('hello world');
위의 코드를 입력시 hello world 의 글자수를 알려준다.
문자열은 공백을 포함하기때문에 11 이 출력된다.
마찬가지로 char_length() 안에 컬럼명을 입력 하였을 경우
해당 컬럼의 각 행의 문자열의 숫자를 계산하여 출력한다.
upper() , lower() ( 문자열을 대문자로, 소문자로 만들어주는 함수)
upper() , lower() 는 python 에서도 있고, 기능도 같다.
select upper('Hello World');
--> Hello World 를 HELLO WORLD , 대문자로 바꾼다.
select lower('Hello World');
--> Hello World 를 hello world , 소문자로 바꾼다.
중복된 데이터를 제거하는 함수 distinct()
distinct()는 중복된 데이터를 제거한다.
books 테이블의 author_lname 컬럼을 보면,
중복된 문자열이 존재한다.
여기서 함수를 적용하면,
1
|
select distinct author_lname from books;
|
cs |
중복 문자열이 제거되어 있는 걸 볼 수 있다.
위의 함수들이 문자열을 처리하는 기본적인 함수들이다.
'IT 프로그래밍 관련 > MySQL' 카테고리의 다른 글
MySQL limit 와 offset (0) | 2021.03.16 |
---|---|
MySQL 테이블 데이터 정렬하기 (0) | 2021.03.16 |
MySQL data처리( select , update, delete ) (0) | 2021.03.15 |
MySQL 데이터 추가하기 (insert) (0) | 2021.03.15 |
AWS에 데이터 베이스서버 만들고, MySQL 연결하기 (0) | 2021.03.15 |
댓글