컴퓨터/MySQL

MySQL (9) - 내장함수를 이용하여 글자를 다뤄보자

달서비 2023. 3. 16. 20:54

예전에 select절을 이용하여 데이터를 불뤄 오는 방법을 다뤘습니다. 데이터를 그대로 가지고 오는 것이 아니고 가공해서 가져오는 것도 필요하다는 것을 알았습니다. where절을 이용하여 데이터의 일부를 가져오는 방법 등을 더 범위 있는 사용을 위해 이번에는 해당 함수들을 설명하려고 합니다

 

※ 함수 설명을 중심으로 내용을 진행합니다.

※ 제가 자주 사용한 함수는 ★로 표시하였습니다.

 

문자열 함수정리

LIKE ()

-- sam문자가 포함된 값을 모두 조회한다.
SELECT * 
FROM mytable
WHERE comp LIKE '%sam%';

-- sam문자로 시작하는 값을 모두 조회한다.
SELECT * 
FROM mytable
WHERE comp LIKE 'sam%';

-- 삼으로 시작하는 3글자를 조회한다
SELECT * 
FROM mytable
WHERE comp LIKE '삼__';

LIKE 함수는 보통 쿼리문에 WHERE절과 같이 조건을 적는 부분에 사용되며 부분적으로 일치하는 칼럼을 찾을 때 사용합니다. 위에서 몇 가지 쿼리 예시로 작성하였는데 특별하게 사용하는 문자 기호는 아래와 같습니다. 

  • _  : 글자 수를 정해짐 
  • % : 글자 수를 정해주지 않음 

 

CONCAT(★)

SELECT CONCAT('2023', '03', '15') --20230315
FROM DUAL;

SELECT CONCAT_WS('/','2023', '03', '15') -- 2023/03/15
FROM DUAL;

CONCAT함수는 concatenate의 약자로 연결이라는 뜻을 가지고 있습니다. 문자열을 잇는 데 사용합니다. concat함수는 순차적으로 문자를 잇습니다. 또한 concat_ws 함수는 문자를 이을때 구분자로 잇습니다.

 

 

LENGTH(★)

SELECT CHAR_LENGTH('Hello'), LENGTH('Hello') --5, 5
FROM DUAL;

SELECT CHAR_LENGTH('안녕'), LENGTH('안녕')   --2, 4
FROM DUAL;

LENGTH함수는 텍스트의 길이를 출력합니다. 길이를 볼 때는 영어와 한글을 확인하여야 합니다. 영어일 때는 1byte씩 적으며 한글을 사용하는 경우 UTF-16 기준으로 2byte씩 인식합니다. CHAR_LENGTH함수는 각 글자 수당 1로 체크합니다.

 

SUBSTR(★)

SELECT SUBSTRING('abcdef', 3)    -- cdef
FROM DUAL;

SELECT SUBSTRING('abcdef', 3, 2) -- cd
FROM DUAL;

 

SUBSTR함수는 substring의 약자로 문자열을 잘라 출력합니다. 인자를 선택할 수 있는데 첫번째 예제는 3번째 글자부터 출력하라는 의미이며 두번째 예제는 3번쨰 글자부터 2글자를 출력하라는 의미입니다.

 

 

LEFT, RIGHT

SELECT LEFT('HELLO', 3), -- HEL
       , RIGHT('HELLO', 2) -- LO
FROM DUAL;

LEFT, RIGHT 함수는 각각 문자열에 왼쪽부터 혹은 오른쪽부터 길이만큼 문자를 반환합니다. 위의 예제는 HELLO를 왼쪽부터 3글자 오른쪽부터 2글자를 출력합니다. 

 

LOWER, UPPER

SELECT LOWER('aBcDe')  -- abcde
	 , UPPER('aBcDe') -- ABCDE
FROM DUAL;

LOWER, UPPER 함수는 텍스트를 각각 대문자를 소문자로 소문자를 대문자로 바꿔줍니다. 위의 예제는 aBcDe라는 텍스트를 대문자 소문자로 변경하였습니다.

 

REVERCE

SELECT REVERSE('abcdef') --fedcba
FROM DUAL;

REVERCE함수는 문자열을 거꾸로 만듭니다. 해당 함수를 이용하여 abcdef라는 텍스트를 fedcba로 바꾸었습니다.

 

REPEAT

SELECT REPEAT("HELLO",3) --HELLOHELLOHELLO
FROM DUAL;

REPEAT 함수는 특정 키워드를 반복합니다. 위의 예제와 같이 HELLO를 3번 출력하였습니다.

 

REPLACE

SELECT REPLACE ('HELLO WORLD', 'WORLD', 'EARTH') -- HELLO EARTH
FROM DUAL;

REPLACE 함수는 특정 키워드를 대체합니다. 해당 함수를 활용하여 띄어쓰기 없이 텍스트를 받는다든지 다양한 문자열을 조작 할수 있습니다. 위의 예제 HELLO WORLD라는 문자열을 HELLO EARTH로 변경하였습니다.

 

 

마지막으로 (REFERENCE)

해당 게시글은 제 기준으로 자주 사용하는 함수를 적었으며 아래 블로그에 내장함수를 잘 정리하였으니 추천합니다. 

https://jaehoney.tistory.com/53

 

MySQL 내장 함수 정리

MySQL 내장 함수 MySQL은 다양한 내장 함수를 포함하고 있습니다. 종류는 제어 흐름 함수, 문자열 함수, 수학 함수, 날짜/시간 함수, 전체 테스트 검색 함수, 형 변환 함수, XML 함수, 비트 함수, 보안/

jaehoney.tistory.com