[MySQL] 문자함수

CONCAT_WS

  • 붙히는 문자열 사이에 구분자를 추가
  • CONCAT_WS(구분자, str1, str2, ...)
SELECT CONCAT_WS('/', 'one', 'two', 'three') 
=> one/two/three

ELT

  • N번 째 문자열을 반환
  • ELT(N, str1, str2, ...)
  • 만약 N이 음수거나 문자열의 갯수보다 크면 NULL을 반환
SELECT ELT(2, 'ab', 'cd', 'ef') => 'cd'
SELECT ELT(-1, 'ab', 'cd', 'ef') => NULL
SELECT ELT(5, 'ab', 'cd', 'ef') => NULL

FIELD

  • 찾고자하는 문자열의 인덱스를 반환
  • FIELD(str, str1, str2, str3,...)
  • 못 찾으면 0 반환
SELECT FIELD('abc', '가나다', 'abc', 'あいう') => 2
SELECT FIELD('XXX', '가나다', 'abc', 'あいう') => 0

FORMAT

  • 숫자를 '#,###,###.##' 이런 형식으로 포맷팅
  • FORMAT(X, D, [locale])
  • D는 반올림할 자릿수
  • local 기본 값은 'en_US'
SELECT FORMAT(12332.98765, 3) => 12,332.988
SELECT FORMAT(12332.98765, 0) => 12,333
SELECT FORMAT(12332.98765, -2) => 12,333
SELECT FORMAT(12332.98765, 3, 'ko_KR') => 12,332.988

INSERT

  • 문자열에 새로운 문자열을 삽입
  • INSERT(str, pos, len, newstr)
  • str: 대상문자열
  • pos: 시작 인덱스
  • len: 시작 인덱스부터 몇 개를 바꿀 것인지
  • newstr: 삽입하려는 문자열
SELECT INSERT('123456789', 3, 2, 'xx') => '12xx56789'
SELECT INSERT('123456789', 3, 100, 'xx') => '12xx'
SELECT INSERT('123456789', 10, 2, 'xx') => '123456789'

INSTR

  • 특정 데이터의 위치 리턴
  • 대소문자 구분을 안함
SELECT INSTR('aBc', 'b'); => 2

SELECT INSTR(12345, 3); => 3

LEFT

  • 문자열 왼쪽 부터 지정 갯수를 반환
  • LEFT(str, len)
  • str: 대상 문자열
  • len: 지정 갯수
SELECT LEFT('abcde', 3) => 'abc'

LENGTH

  • 데이터의 길이 리턴
SELECT LENGTH('abc') => 3

SELECT LENGTH(123) => 3

LOCATE

  • 대상 문자열에 지정 문자열의 시작 인덱스를 리턴
  • LOCATE(substr, str, [pos])
  • substr: 대상 문자열
  • str: 지정 문자열
  • pos: 찾기 시작하는 인덱스
SELECT LOCATE('xx', 'abcXXabcXX') => 4
SELECT LOCATE('xx', 'abcXXabcXX', 7) => 9
SELECT LOCATE('xx', 'abcXXabcXX', 10) => 0

LOWER / UPPER

  • 입력된 문자를 소문자 / 대문자로 변경시키는 함수
SELECT LOWER('aBc') => 'abc'
SELECT UPPER('aBc') => 'ABC'

LPAD / RPAD

  • LPAD / RPAD(칼럼명, 기준 자릿수, 채워 넣을 숫자 or 문자)
SELECT LPAD('ABC', 5, 'X') => 'XXABC'
SELECT RPAD('ABC', 5, 'X') => 'ABCXX'

SELECT LPAD(123, 5, 0) => 00123
SELECT LPAD(123, 5, 0) > 100 => 1(true)

REPLACE

  • 특정 문자열을 찾아서 다른 문자열로 치환
  • REPLACE('문자열', '찾을 문자', '치환할 문자')
  • 대소문자 구별
SELECT REPLACE('aBc', 'B', 'b') => abc
SELECT REPLACE('aBc', 'A', 'X') => aBc

REVERSE

  • 문자열을 반대로 반환
SELECT REVERSE('abc') => 'cba'

RIGHT

  • 문자열 오른쪽 부터 지정 갯수를 반환
  • RIGHT(str, len)
  • str: 대상 문자열
  • len: 지정 갯수
SELECT RIGHT('abcde', 3) => 'cde'

SUBSTR / MID / SUBSTRING

  • 데이터 자르기
  • substr(칼럼명, 시작할 문자열의 위치 값, 리턴 시킬 값의 길이)
SELECT SUBSTR('1234567', 2, 3) => '234'
SELECT MID('1234567', 2, 3) => '234'
SELECT SUBSTRING('1234567', 2, 3) => '234'

SELECT SUBSTR(1234567, 2, 3) => 234

TRIM / LTRIM / RTRIM

  • TRIM 문자열 양쪽 공백제거
  • LTRIM 문자열 왼쪽 공백제거
  • RTRIM 문자열 오른쪽 공백제거
SELECT LENGTH(TRIM(' abc ')) => 3
SELECT LENGTH(LTRIM(' abc ')) => 4
SELECT LENGTH(RTRIM(' abc ')) => 4

SPACE

  • 지정 갯수 만큼의 빈칸을 반환
SELECT LENGTH(CONCAT(SPACE(6), 'abc')) => 9

links

social