MySQL에서 사용할 수 있는 간단한 함수들을 정리해보았습니다.
(필자 확인용)
※ 아래 소개되어진 함수 이외에도 다양한 함수가 존재합니다.
CONCAT 부터 시작합니다.
CONCAT ( 문자열 )
SELECT CONCAT('.','/',';')
CONCAT 다음의 문자열들을 합쳐줍니다.
묵시적 형 변환
SQL에서는 문자열을 작성하더라도 자동으로 정수로 변환해서
연산하는 기능이 있습니다. 이를 바꾸기 위해서는 CONCAT를 따로 써주어야 합니다.
SELECT '100' + '200';
이렇게 문자열로 작성하더라도, 300이 반환됩니다.
문자열로 바꾼다면?
SELECT CONCAT('100', '200');
이렇게 100200이 반환되기 위해선 CONCAT를 사용합니다.
PYTHON에서의 str함수를 씌운것과 같습니다.
논리 연산자 사용
SELECT 1 > '2mega';
(False의 0을 반환)
이렇게 문자열로 2mega로 작성한다고 해도 자동으로 정수 2로 변환해서 비교합니다.
숫자를 바꿔봐도 동일하게 나옵니다.
SELECT 3 > '3mega';
가장 앞에 숫자가 없으면 0이라고 판단합니다.
SELECT 0 = 'mega2';
True의 1 반환
SQL의 내장함수 조작
SELECT CASE 20
WHEN 1 THEN '일'
WHEN 5 THEN '오'
WHEN 10 THEN '십'
ELSE '모름'
END AS 'CASE 연습';
이렇게 파이썬에서의 IF문 처럼 SQL에서도 SELECT와 WHEN을 조합해서
사용합니다.
CONCAT_WS - CONCAT의 변형
SELECT CONCAT_WS('/', '2023', '02', '03');
간단하게 CONCAT_WS('기호', '문자열1', '문자열2'...)로서 기호를 구분자로 하여 문자열 사이에 넣어 반환해줍니다.
ASCII, CHAR
SELECT ASCII('A'), CHAR(65);
Open value in viewer 에서 확인
ASCII는 해당 문자의 아스키 코드값을 돌려줍니다.
CHAR는 해당 아스키 코드값에 있는 문자를 돌려줍니다.
이 함수는 평소에 사용할 일이 있을지 모르겠습니다.
아스키는 파이썬에서는 알고리즘 풀이에서 사용하는 경우가 종종 있었습니다.
SQL에서는 딱히 주소값을 찾아서 돌아갈 일이 있을지 모르겠습니다.
BIT_LENGTH, CHAR_LENGTH, LENGTH
SELECT BIT_LENGTH('A'), CHAR_LENGTH('AB'), LENGTH('BOT');
BIT_LENGTH는 저장소에 할당된 Bit의 크기를 보여줍니다.
현재는 72bit가 저장되어 있습니다.
CHAR_LENGTH는 문자의 갯수를 반환합니다.
파이썬에서의 len()과 똑같습니다.
LENGTH는 할당된 byte의 수를 반환해줍니다.
ELT, FIELD, FINDE_IN_SET, INSTR, LOCATE
SELECT ELT(2, '하나', '둘', '셋'), FIELD('둘', '하나', '둘', '셋'), FIND_IN_SET('둘', '하나,둘,셋'), INSTR('하나둘셋', '둘'), LOCATE('둘', '하나둘셋');
파이썬의 인덱싱, 슬라이싱과 정말 비슷합니다.
ELT는 맨앞에 온 숫자의 주소값을 저장하고, 다음번에 오는 문자열 중에서 찾아 해당하는 값을 반환합니다. (둘)
FIELD는 맨앞에 온 값을 저장하고, 다음번에 오는 문자열 중에서 찾아 주소값을 반환합니다.(2)
FIND_IN_SET은 FIELD와 동일한 기능이지만 문자열 리스트가 , 로 구분되어 있어야 하고, 공백도 없어야합니다.(2)
INSTR은 모두 붙어있는 문자열에서 찾는 문자열의 시작 위치를 반환합니다(3)
LOCATE는 INSTR처럼 문자열의 시작위치를 반환하는데, 찾는 문자열이 먼저 옵니다(3)
이번 시간은 여기까지입니다!
'Database' 카테고리의 다른 글
[MySQL] Stored Procedure와 Stored Function (0) | 2023.02.07 |
---|---|
[DB] MySQL 백업하기_중요한 파일을 지키자! (0) | 2022.12.02 |
[DB] MySQL 기초 단계 (0) | 2022.12.01 |
[DB] 데이터베이스의 용어와 특성 (0) | 2022.12.01 |