728x90
[내장 함수] 문자형 함수
@2024.05.02
문자형 함수
문자열 길이(LENGTH)
- bit_length : 할당된 Bit의 크기
- char_length : 문자의 개수
- length : 할당된 byte의 크기 반환
SELECT bit_length('Hello'); -- 40
SELECT char_length('Hello'); -- 5
SELECT length('Hello'); -- 5
문자열 합치기(CONCAT)
- 하나 이상의 문자열을 연결하여 새로운 문자열 생성
SELECT CONCAT('Hello', 'World'); -- 'HelloWorld'
SELECT CONCAT('I have ', 3, ' apples.'); -- 'I have 3 apples.'
-- employees 테이블에서 last_name 열의 값과 'Employee '를 연결해 full_name이라는 새로운 열을 생성
SELECT CONCAT('Employee ', last_name) AS full_name FROM employees;
-- users 테이블의 name 열 값과 'Name: '을 연결합니다. 만약 name 값이 NULL이라면 'N/A'를 사용
SELECT CONCAT('Name: ', IFNULL(name, 'N/A')) AS display_name FROM users;
문자열 반복(REPEAT)
- 지정된 문자열을 지정된 횟수만큼 반복하여 새로운 문자열 생성
SELECT REPEAT('Hello ', 3); -- 'Hello Hello Hello '
-- employees 테이블의 name 열의 값과 'name'을 두 번 반복하여 새로운 열을 생성
SELECT REPEAT(name, 2) AS repeated_name FROM employees;
문자열 뒤집기(REVERSE)
- 문자열을 역순으로 반환
SELECT REVERSE('Hello'); -- 'olleH'
-- 숫자 12345를 문자열로 변환하고 그 문자열을 역순으로 반환
SELECT REVERSE(CAST(12345 AS CHAR)); -- '54321'
-- employees 테이블의 name 열의 값들을 역순으로 반환하여 새로운 열을 생성
SELECT REVERSE(name) AS reversed_name FROM employees;
문자열 위치(LOCATE)
- 문자열 내에서 지정된 부분 문자열의 위치를 찾는다
- 위치는 1부터 시작하며, 부분 문자열이 발견되지 않을 경우 0을 반환
SELECT LOCATE('l', 'Hello'); -- 3
SELECT LOCATE('x', 'Hello'); -- 0
-- products 테이블의 description 열에서 'do'가 처음으로 발견된 위치를 반환
SELECT LOCATE('do', description) FROM products;
-- 'Hello' 문자열에서 3번째 위치부터 'l'을 찾으므로 3을 반환
SELECT LOCATE('l', 'Hello', 3); -- 3
문자열 추출(LETF, RIGHT)
- 문자열의 왼쪽 또는 오른쪽 일부를 반환
- 특정 위치에서부터 지정된 수의 문자를 추출
SELECT LEFT('Hello World', 5); -- 'Hello' <- 왼쪽에서부터 5개 문자열 추출
SELECT RIGHT('Hello World', 5); -- 'World'
-- employees 테이블의 name 열에서 왼쪽에서부터 3개의 문자를 추출하여 새로운 열을 생성
SELECT LEFT(name, 3) AS initials FROM employees;
-- products 테이블의 description 열에서 오른쪽에서부터 10개의 문자를 추출하여 새로운 열을 생성
SELECT RIGHT(description, 10) AS last_words FROM products;
문자열 분리(SUBSTRING)
- 문자열의 일부분을 반환하며, 시작 위치와 길이를 지정한다.
-- 'Hello World' 문자열의 7번째 위치부터 끝까지의 문자열을 추출
SELECT SUBSTRING('Hello World', 7); -- 'World'
-- 'Hello World' 문자열에서 7번째 위치부터 시작하여 5개의 문자를 추출
SELECT SUBSTRING('Hello World', 7, 5); -- 'World'\
-- employees 테이블의 name 열에서 1번째 위치부터 시작하여 3개의 문자를 추출하여 새로운 열을 생성
SELECT SUBSTRING(name, 1, 3) AS initials FROM employees;
-- products 테이블의 description 열에서 1번째 위치부터 시작하여 10개의 문자를 추출하고, 이를 '...'과 함께 연결하여 새로운 열을 생성
SELECT CONCAT(SUBSTRING(description, 1, 10), '...') AS short_description FROM products;
문자열 대문자(UPPER, UCATE)/소문자(LOWER, LCASE)
- 문자열을 각각 소문자와 대문자로 변환
SELECT LOWER('Hello World'); -- 'hello world'
SELECT UPPER('Hello World'); -- 'HELLO WORLD'
-- employees 테이블의 name 열의 값을 모두 소문자로 변환하여 새로운 열을 생성
SELECT LOWER(name) AS lowercase_name FROM employees;
-- products 테이블의 description 열의 값을 모두 대문자로 변환하여 새로운 열을 생성
SELECT UPPER(description) AS uppercase_description FROM products;
문자열 교체(REPLACE)
- 문자열에서 특정 부분 문자열을 다른 문자열로 대체
SELECT REPLACE('Hello World', 'World', 'Universe'); -- 'Hello Universe'
SELECT REPLACE('Hello world', 'hello', 'Goodbye'); -- 'Hello world' -> 대소문자를 구분하므로 변하지 않음
SELECT REPLACE('Hello World', ' ', ''); -- 'HelloWorld'
-- products 테이블의 description 열에서 'old_value'를 'new_value'로 대체하여 새로운 열을 생성
SELECT REPLACE(description, 'old_value', 'new_value') AS updated_description FROM products;
문자열 공백 제거(TRIM)
- trim : 문자열의 모든 공백 제거
- LEADING : 특정 문자열을 문자열의 시작 부분에서 제거할 때 사용
- TRAILING : 특정 문자열을 문자열의 끝부분에서 제거할 때 사용
- BOTH : 특정 문자열을 문자열의 양쪽에서 제거할 때 사용
- ltrim: 왼쪽 공백 제거
- rtrim : 오른쪽 공백 제거
SELECT TRIM(' Hello World '); -- 'Hello World'
SELECT LTRIM(' Hello World '); -- 'Hello World '
SELECT RTRIM(' Hello World '); -- ' Hello World'
SELECT TRIM(LEADING '0' FROM '000123'); -- '123'
SELECT TRIM(TRAILING '!' FROM 'Hello World!!!'); -- 'Hello World'
SELECT TRIM(BOTH 'x' FROM 'xxxHello Worldxxx'); -- 'Hello World'
-- employees 테이블의 name 열의 값의 앞뒤에 있는 공백을 제거하여 새로운 열을 생성
SELECT TRIM(name) AS trimmed_name FROM employees;
문자열 포맷(FORMAT)
- 숫자를 특정 형식에 맞게 서식화하는데 사용
- 주로 금액이나 숫자 데이터를 사람이 쉽게 이해할 수 있는 형식으로 변환할 때 사용
-- 숫자를 통화 형식으로 변환하여 반환
-- 두 번째 매개변수는 소수점 이하 자릿수를 나타낸다.
SELECT FORMAT(1234567.89, 0); -- '1,234,567'
-- 미국 통화 형식으로 숫자를 표시
SELECT FORMAT(1234567.89, 2, 'en_US'); -- '$1,234,567.89'
문자열 채우기(LPAD, RPAD)
- 문자열을 주어진 길이로 채우는데 사용
- 원본 문자열을 주어진 길이로 채우고, 필요에 따라 왼쪽 또는 오른쪽에 채워진 문자 추가
-- 'hello' 문자열을 10자리로 채우고, 부족한 곳을 왼쪽에 '*' 문자로 채운다.
SELECT LPAD('hello', 10, '*'); -- '*****hello'
--'hello' 문자열을 10자리로 채우고, 부족한 곳을 오른쪽에 '*' 문자로 채운다.
SELECT RPAD('hello', 10, '*'); -- 'hello*****'
-- employees 테이블의 name 열의 값을 10자리로 채우고, 부족한 곳을 왼쪽부터 '-' 문자로 채워서 새로운 열을 생성
SELECT LPAD(name, 10, '-') AS padded_name FROM employees;
-- products 테이블의 description 열의 값을 20자리로 채우고, 부족한 곳을 오른쪽부터 '.' 문자로 채워서 새로운 열을 생성
SELECT RPAD(description, 20, '.') AS padded_description FROM products;
728x90
'MYSQL' 카테고리의 다른 글
[내장 함수] 날짜형 함수 (0) | 2024.05.05 |
---|---|
[내장 함수] 숫자형 함수 (0) | 2024.05.05 |
SELECT절 (0) | 2024.05.05 |
MySQL DB/사용자 생성 및 사용자 권한 설정 (0) | 2024.05.04 |
Docker을 이용해 MYSQL 설치 (0) | 2024.05.04 |