[ mysql ] 숫자와 문자열을 다루는 함수(SUBSTR, SUBSTRING, LEFT, RIGHT, LENGTH, CHAR_LENGTH, CHARACTER_LENGTH)

JooKit 주킷 2021. 9. 2. 00:08
목차 접기
728x90
반응형

mysql 연습 데이터로 쿼리 작성해보는 사이트로 이동

위 링크로 이동해서 아래 쿼리를 입력해보자.

 

 

 

SUBSTR, SUBSTRING 주어진 값에 따라 문자열 자름
LEFT 왼쪽부터 N글자를 추출
RIGHT 오른쪽부터 N글자를 추출
LENGTH 문자열의 바이트 길이(영문, 한글 글자당 바이트 다름)
CHAR_LENGTH, CHARACTER_LENGTH 문자열의 문자 길이 

 

 

 

SELECT 
    SUBSTR('ABCDEFG', 3),
    SUBSTR('ABCDEFG', 3, 2),
    SUBSTR('ABCDEFG', -4),
     SUBSTR('ABCDEFG', -4, 2);

출력 : CDEFG, CD, DEFG, DE
의미 : sql은 0이 아닌 index가 1부터 시작한다.

 


양수의 경우 1부터 3번째자리의 문자열부터 잘라내겠다는 의미.
양수, 양수는 몇번째부터 몇개의 문자를 잘라낼지 결정하는 것.
음수의 경우 뒤에서부터 4번째에 위치한 문자열부터 잘라내겠다는 의미.
음수, 양수는 뒤에서부터 4번째에 위치한 문자열부터 2개를 잘라내겠다는 의미.

 

 

 

SELECT 
    LEFT('ABCDEFG', 3),
       RIGHT('ABCDEFG', 3);

출력 : ABC, EFG
의미 : LEFT는 왼쪽에서부터 몇개를, RIGHT는 오른쪽에서부터 몇개를 출력하겠다.

 

 

 

SELECT 
    OrderDate,
    LEFT(OrderDate, 4) AS `Year`,
    SUBSTR(OrderDate, 6, 2) AS Month,
    RIGHT(OrderDate, 2) AS Day
FROM Orders;

출력 : 1996-07-04, 07, 04

 

 

 

LENGTH ~

SELECT 
    LENGTH('ABCDEF'),
    CHAR_LENGTH('ABC'),
    CHARACTER_LENGTH('A');

영어는 문자 1개당 1바이트

 

 

 

SELECT 
    LENGTH('안녕하세요'),
    CHAR_LENGTH('안녕하세요'),
    CHARACTER_LENGTH('안녕하세요');

출력 : 원하지 않는 값이 출력된다.
w3school 사이트에서는 한글이 제대로 작동하지 않는다.

 

 

 

SELECT 
    LENGTH('안녕하세요'),
    CHAR_LENGTH('안녕'),
    CHARACTER_LENGTH('요');

출력 : 15, 2, 1
한글은 문자 1개당 3바이트를 차지하나보다.

728x90
반응형
LIST