본문 바로가기
데이터베이스

MySQL 문법정리 4. 변수, 내장 함수(조건문, 문자열 함수)

by 호놀롤루 2022. 4. 18.

1. 개요

MySQL에서도 변수를 사용할 수 있다.

 

 

2. 사용법

2-1. 변수

위 코드처럼 "set @변수명 = 원하는값;" 으로 변수를 선언하고, 사용할 수 있다.

그리고, 변수 외에도 MySQL의 내장함수를 사용할 수 있다.

 

 

2-2. 내장 함수 

  • IF(수식, true, false);
    수식이 true인지, false인지에 따라 결과가 2중 분기로 나뉘는 함수다.

이런 식으로, 내장함수를 통해 임시 테이블을 만들 수도 있다. 위 명령어의 경우, 100은 200보다 작으니
false인, 'false가 나온다' 가 입력된 것이다.

 

  • IFNULL(수식1, 수식2);
    수식1이 NULL(비어있음)이 아니면 수식1이 리턴되고, 수식1이 NULL이면 수식2가 리턴되는 함수다.

 

  • NULLIF(수식1, 수식2);
    수식1과 수식2가 같으면 NULL을 리턴, 다르면 수식1을 리턴하는 함수다.

 

  • CASE문
    정확하게 말하면 case문은 내장함수가 아닌, 연산자(operator)다.
    다중 분기에서 사용되는 연산자이니 알아두면 편하다.

위의 코드에선 case가 5이므로, 5에 해당하는 '오'가 들어갔다.

만약 when에 해당되는 게 없으면 else에 있는 '왜 안나와' 가 들어갈 것이다.
이런 식으로, 입력값에 따라 출력을 다르게 하고싶으면 case문을 사용하면 된다.

 

  • 문자열 함수
    문자열을 조작하는 함수다.
    - ASCII(아스키 코드) : 문자의 ASCII(American Standard Code for Information Interchange) 코드값 리턴
       select ascii('a'); 를 입력하면 소문자 a의 아스키 코드값인 97이 임시 테이블에 들어간다.

    - BIT_LENGTH(문자열), CHAR_LENGTH(문자열), LENGTH(문자열)
       하나씩 설명하면
       BIT_LENGTH(문자열) : 할당된 비트 크기 또는 문자 크기를 리턴한다.
       CHAR_LENGTH(문자열) : 문자의 갯수를 리턴한다.
       LENGTH() : 할당된 바이트 수를 리턴한다.

      - CONCAT(문자열1, 문자열2, ...) : 문자열을 어어서 리턴한다.
         select concat('안녕하세요', '반갑습니다'); 를 하면 '안녕하세요반갑습니다' 가 리턴된다.

      - CONCAT_WS(구분자, 문자열1, 문자열2, ...) : 문자열 사이에 구분자를 끼워서 이어주고, 리턴한다.
         select concat_ws('/', '2022', '04', '18'); 를 하면 '2022/04/18' 이 리턴된다.

      - ELT(위치, 문자열1, 문자열2, ...) : 위치 번째에 해당하는 문자열을 리턴한다.

      - FIELD(찾을 문자열, 문자열1, 문자열2, ...) : 찾을 문자열의 위치를 찾아서 리턴한다. 없으면 0 리턴

      - FIND_IN_SET(찾을 문자열, 문자열 리스트) : 문자열 리스트에서 찾을 문자열을 찾아, 위치를 리턴한다.
        문자열 리스트는 ,로 구분되어 있고, 공백이 없어야 한다.

      - INSTR(기준 문자열, 부분 문자열) : 기준 문자열에서 부분 문자열을 찾아 그 시작 위치를 리턴한다.

      - LOCATE(부분 문자열, 기준 문자열) : INSTR과 동일한 기능이지만, 파라미터의 순서가 반대다.

      - FORMAT(숫자, 소수점 자릿수) : 숫자를 소수점 아래 자릿수까지 표현해서 리턴한다.
         1,000 단위마다 ,로 표시해준다.

      - BIN(숫자), OCT(숫자), HEX(숫자) : 각각 숫자의 2진수 값, 8진수 값, 16진수 값을 리턴한다.

      - INSERT(기준 문자열, 위치, 길이, 삽입할 문자열) : 기준 문자열의 위치부터 길이만큼 지우고, 삽입할 문자열을
        끼운 다음, 리턴한다.

      - LEFT(문자열, 길이), RIGHT(문자열, 길이) : 각각 왼쪽, 오른쪽부터 길이만큼 문자열 리턴한다.
        select left('abcdefg', 4); 'abcd' 리턴, select right('abcdefg', 4); 'defg' 리턴

      - UPPER(문자열, LOWER(문자열) : UPPER는 소문자를 대문자로, LOWER은 대문자를 소문자로 변경하고 리턴한다.

      - LPAD(문자열, 길이, 채울 문자열), RPAD(문자열, 길이, 채울 문자열) : 문자열을 길이만큼 늘린 후, 빈 곳을
        채울 문자열로 채우고 리턴한다..

      - LTRIM(문자열), RTRIM(문자열) : 문자열의 왼쪽/ 오른쪽 공백을 제거하고 리턴한다. 중간의 공백은 제거되지
         않는다.

      - TRIM(문자열) : 문자열의 앞 뒤 공백을 제거해서 리턴한다. ((LEADING(앞), BOTH(양쪽), TRAILING(뒤) +
    문자열) 중 하나 + FROM 문자열 형태로 쓰게되면, 특정 문자열을 삭제하고 표시할 수 있다.
    TRIM(BOTH '?' FROM '????네?????'); 의 형태로 쓰게되면 '네' 를 리턴한다.)

      - REPEAT(문자열, 횟수) : 문자열을 횟수만큼 반복해서 리턴한다.

      - REPLACE(문자열, 원래 문자열, 바꿀 문자열) : 문자열에서 원래 문자열을 찾아서 바꿀 문자열로 바꿔서 리턴한다.
      select replace('나는 강한 사람이다', '강한 사람', '스트롱 맨'); '나는 스트롱 맨이다' 리턴

      - REVERSE(문자열) : 문자열의 순서를 거꾸로 바꿔서 리턴한다.

      - SPACE(길이) : 길이만큼의 공백을 리턴한다.

     - SUBSTRING(문자열, 시작위치, 길이) or SUBSTRING(문자열 FROM 시작위치 FOR 길이) : 시작위치부터
       길이만큼 문자열을 리턴한다. 길이 없이 쓰면, 문자열의 끝까지 반환한다.

      - SUBSTRING_INDEX(문자열, 구분자, 횟수) : 문자열에서 구분자가 왼쪽부터 횟수 번째까지 나오면
        오른쪽은 버리고 리턴한다. 횟수가 음수면 오른쪽부터 세고, 왼쪽을 버리고 리턴한다.

댓글