728x90
<대문자, 소문자>
- UCASE, UPPER: 대문자
- LCASE, LOWER: 소문자
SELECT UCASE(customername), LCASE(customername)
FROM customers;
>> customers에서 customername을 대문자와 소문자로 변형하여 출력하시오.
<결과>
<문자열 연결>
- CONCAT(...): 문자열 연결 함수
SELECT CONCAT('Hello', ' ', 'This is ', 2024);
<결과>
- CONCAT_WS(S, ...): …을 S로 이어 붙여줌
SELECT CONCAT_WS('-', 2024, 01, 05);
>> 2024-1-5 (숫자로 취급하여 0이 사라짐)
<결과>
SELECT CONCAT_WS(' ', firstname, lastname) AS FullName
FROM employees;
>> employees에서 firstname, lastname을 ' '로 이어붙여
FullName로 출력하시오.
<결과>
<문자열 자르기>
- SUBSTR(): 문자열 자르기
- LEFT(): 왼쪽부터 N글자를 자르기
- RIGHT(): 오른쪽부터 N글자 자르기
- 음수를 적으면 반대로 숫자 세기
SELECT SUBSTR('ABCDEFG', 3),
SUBSTR('ABCDEFG', 3, 2),
SUBSTR('ABCDEFG', -4),
SUBSTR('ABCDEFG', -4, 2);
>> 'ABCDEFG'를 세번째부터 잘라내라,
'ABCDEFG'를 세번째부터 잘라내서 두 자리만 출력해라,
'ABCDEFG'를 마지막자리부터 네 자리를 잘라내라,
'ABCDEFG'를 마지막 네번째부터 잘라서 두 자리만 출력해라.
<결과>
SELECT LEFT('ABCDFE', 3),
RIGHT('ABCDEF', 3);
>> 'ABCDFE'를 왼쪽에서부터 세 자리만 잘라 출력하고,
'ABCDFE'를 오른쪽부터 세 자리만 잘라 출력해라.
<결과>
SELECT orderdate,
LEFT(orderdate, 4) as Year,
SUBSTR(orderdate, 6, 2) as Month,
RIGHT(orderdate, 2) as Day
FROM orders
WHERE SUBSTR(orderdate, 6, 2) = '07';
>> orders에서 orderdate를 여섯번째자리부터 두 글자만 잘랐을 때, 07인 경우
orderdate가 4이면 Year으로,
orderdate의 여섯번째 자리가 두글자면 Month로,
orderdate가 2이면 Year으로 출력해라.
<결과>
<문자열 세기>
- LENGTH: 문자의 수
- CHARACTER_LENGTH: 문자열의 문자 길이 (세는 기준: 바이트 길이)
SELECT LENGTH('ABCDE'),
LENGTH('가나다라마'),
CHARACTER_LENGTH('ABCDE'),
CHARACTER_LENGTH('가나다라마');
>> 'ABCDE'의 문자의 수,
'가나다라마'의 문자 길이,
'ABCDE'의 문자 길이,
'가나다라마'의 문자 개수를 출력하시오.
**영어는 1 바이트, 한국어는 3 바이트
<결과>
<공백 제거>
- TRIM, LTRIM, RTRIM: 공백 제거 함수
SELECT CONCAT('|', ' HELLO ', '|'),
CONCAT('|', LTRIM(' HELLO '), '|'),
CONCAT('|', RTRIM(' HELLO '), '|'),
CONCAT('|', TRIM(' HELLO '), '|');
>>' HELLO '과 '|'를 '|'로 연결하고,
' HELLO '의 왼쪽 공백을 제거하고 '|'와 '|'로 연결하고,
' HELLO '의 오른쪽 공백을 제거하고 '|'와 '|'로 연결하고,
' HELLO '의 공백을 제거하고 '|'와 '|'로 연결해라.
<결과>
<문자열 추가>
- LPAD(S, N, P), RPAD(S, N, P): S가 N글자가 될 때까지 P를 추가, 문자를 추가
SELECT LPAD('ABC', 5, '-'),
RPAD('ABC', 5, '-');
>> 'ABC'의 왼쪽에 -를 추가하는데, 글자수가 5가 될 때까지 추가하고
'ABC'를 오른쪽에 -를 글자수가 5가 될 때까지 추가하라.
<결과>
SELECT LPAD(supplierid, 5, 0),
RPAD(price, 6, 0)
FROM products;
>> products 중에서 supplierid 항목의 왼쪽에 0를 다섯자리가 될 때까지 추가하고,
products 중에서 price 항목의 오른쪽에 0을 여섯자리가 될 때까지 추가해라.
<결과>
<문자열 대체>
- REPLACE(S, A, B) S 중에서 A를 B로 변경 (문자 변경)
SELECT REPLACE('맥도날드에서 맥도날드 햄버거를 먹었다.', '맥도날드', '버거킹');
>> '맥도날드에서 맥도날드 햄버거를 먹었다.' 중에서 '맥도날드'를 '햄버거'로 변경해라.
<결과>
SELECT REPLACE(description, ', ', ' and ') FROM categories;
>> categories에서 description 항목 중 ,를 and로 변경해라.
<결과>
<문자 위치 찾기>
- INSTR(S, s) S중에서 s의 첫 위치를 반환, 없으면 0
SELECT INSTR('ABCDE', 'ABC'),
INSTR('ABCDE', 'BCDE'),
INSTR('ABCDE', 'C'),
INSTR('ABCDE', 'F');
>> 'ABCDE' 중에서 'ABC'이 처음 나오는 위치를 반환하고,
'ABCDE' 중에서 'BCDE'이 처음 나오는 위치를 반환하고,
'ABCDE' 중에서 'C'이 처음 나오는 위치를 반환하고,
'ABCDE' 중에서 'F'이 처음 나오는 위치를 반환하라.
<결과>
SELECT * FROM customers
WHERE INSTR(`CustomerName`, ' ') BETWEEN 1 AND 6;
>> customers 중에서
CustomerName 항목 중 ' '이 나오는 자리가 1에서 6사이에 있는 데이터를 반환하시오.
<결과>
<형 변환 함수>
- CAST(A, T): A를 T형으로 변환, 형변환 함수
- 문자열을 날짜로 변환하거나 숫자 형식을 문자열로 변환
SELECT '01' + '1', '01' + 1,
CAST('01' AS DECIMAL) = CAST('A' AS DECIMAL);
>> '01' + '1', '01' + 1을 출력하고,
'01'을 DECIMAL로 이름붙이고 'A'를 DECIMAL로 이름 붙인 것이 같은지 아닌지 출력하시오.
<결과>
'프로그래밍 언어 > SQL' 카테고리의 다른 글
SQL 함수 간단 실습 :: JOIN (내부 조인, 외부 조인, 셀프 조인) (0) | 2024.01.25 |
---|---|
SQL 함수 간단 실습 :: 시간/날짜 관련 함수 (0) | 2024.01.24 |
SQL 함수 간단 실습 :: 숫자 관련 함수 (0) | 2024.01.22 |
SQL 함수 간단 실습 :: SELECT문2 (SELECT 사칙연산) (1) | 2024.01.21 |
SQL 함수 간단 실습 :: SELECT문 (0) | 2024.01.11 |