● Concat(), Concat_ws() : 두 개 이상의 문자열을 결합한다.
select concat('hello','-','world');
select concat('hello','-','world',5,6);
select concat_ws("-",'hello','world',5,6);
● SubString(), SubString_index(): 문자 잘라내기
select substring("HELLO WORLD",6); 는 6번째 index부터 마지막 index까지 잘라내는 것이다.
select substring("HELLO WORLD",1,7); 는 1번째 index부터 7번째 index까지 잘라낸다.
● Substring_index : 찾는 문자열이 n번째 등장하면 그 뒤 문자열부터는 버려짐
select substring_index(문자열, 찾는 문자열, n번째);
select substring_index("HELLO MY NAME IS JUNG"," ",3); 이 문장은 공백을 찾는데 3번쨰 공백부터는 버린다는 것이다.
이번에는 select userid, substring_index(mdate,'-',2) as'가입연월' from usertbl; 를 해볼 것 이다.
● length() : 문자열 길이 값 출력
select length("HelloWorld");
select length("Hello World"); 띄어쓰기도 하나의 길이로 인정된다.
● Lower() : 문자열을 모두 소문자로 변환
Uppder() : 문자열을 모두 대문자로 변환
● Trim() : 앞, 뒤 공백 제거
● Replace( str, old_str, new_str ) : 문자열에서 old_str을 new_str로 대체
select replace("hello i have a dog", "dog", "cat"); 으로 dog를 cat으로 변환 시켰다.
● INSTR(str, substr) : 문자열에서 substr이 처음 나타나는 위치를 반환
select instr("bowwow bowwow","wow"); 4번째부터 wow가 시작됐기 때문에 4가 출력되었다.
● LPAD, RPAD(str, len, pad_str) : 문자열을 왼쪽, 오른쪽으로 패딩
select lpad("abc",7,"0"); 하면 7자리 글자에서 abc를 끝에 입력시키고 남은 자리에는 0으로 채운다.
select rpad("abc",7,"0"); 하면 7자리 글자에서 abc를 앞에 입력시키고 남은 자리에는 0으로 채운다.
● LEFT, RIGHT(str, len) : 문자열에서 왼쪽 또는 오른쪽에서 길이만큼 추출
select left("abcdefg",3); 하면 앞에서 3개의 문자까지 출력된다.
select right("abcdefg",3); 하면 뒤에서 3개의 문자까지 출력된다.
● MID(str, pos, len) : 문자열에서 특정 시작점에서의 길이만큼을 추출
select mid("abcdefg",4,2); 하면 4번쨰 문자에서부터 2개의 문자를 출력하는 것이다.
● BIN, OCT, HEX : 각각 2진수, 8진수, 16진수 값을 반환
select bin(2); 숫자2를 2진수로 바꾸면 10로 되므로 10이 출력
● REVERSE(str) : 주어진 문자열을 거꾸로 반환
select reverse("12345"); 하면 문자열이 거꾸로 반환된다.
● SPACE(len) : 길이만큼의 공백을 반환
select concat("HELLO", space(5), "WORLD"); 하면 5개의 공백만큼이 들어가게 된다.
● REPEAT(str, len) : 문자열을 주어진 횟수만큼 반복
select repeat("hello",3); 하면 주어진 문자열인 hello를 3번 반복한다.
● LOCATE(substr, str, [pos]) : 첫번째로 발견한 문자열의 위치를 반환
select locate("ef","abcdefg"); 하면 ef가 시작되는 문자의 위치를 출력한다.
select position("ef" in "abcdefg"); 와 위에서 보았던 instr를 사용한 select instr("abcdefg", "ef"); 모두 같은 값이 나온다.
여기서 instr는 파라미터 순서만 바꾸면 된다.
locate로는 시작지점을 설정할 수 있는데
select locate("ef", "abcdefgabcdefg",6); 하면 6번째부터 'ef'를 찾고 처음 발견한 'ef'의 위치를 반환하는 것이다.
● FORMAT(x, d) : 세자리 수 마다 콤마를 넣고 주어진 길이만큼 소수점을 소수점을 남김
화폐단위를 나타내기 좋을 것 같다.
select format(1231233.123,6); 는 정수부분의 세자리마다 ','를 넣어 '1,231,233' 이되고 소수점 뒤는 6자리를 채우는데 입력한 값 외의 나머지 값에는 0을 넣어 6자리를 채운다. '.123000'
< 날짜, 시간 관련 함수 >
- 날짜
select mDate from usertbl; mdate열의 값을 출력한 것이다.
select Year(mdate) from usertbl; mdate열의 연도만 출력한다.
select Month(mdate) from usertbl; mdate열의 월만 출력한다.
select Day(mdate) from usertbl; mdate열의 일만 출력한다.
- 시간
select now(); 현재 날짜와 시간을 출력한다.
select date(now()); 현재 날짜만 출력한다.
select curdate(); 역시 현재 날짜만 출력한다.
select time(now()); 현재 시간만 출력한다.
select curtime(); 역시 현재 시간만 출력한다.
< 연습문제>
select concat(replace(curdate(), '-','#'),"-", replace(curtime(),':','|'));
참고 : https://velog.io/@wngud4950/MySQL-%EB%82%B4%EC%9E%A5%ED%95%A8%EC%88%98-%EC%A0%95%EB%A6%AC
'IT수업 > 데이터베이스' 카테고리의 다른 글
it 수업 6주차 (19) 업, 다운로드 (0) | 2024.02.02 |
---|---|
it 수업 6주차 (18) if, case when 조건문 (1) | 2024.02.01 |
it 수업 6주차 (16) 변수, LIMIT, 형 변환, 비교연산자 (1) | 2024.02.01 |
it 수업 6주차 (15) UNIQUE, CHECK, DEFAULT (2) | 2024.01.31 |
it 수업 6주차 (14) 제약조건 PK, FK (1) | 2024.01.31 |