1. TRIM()
String function 중 가장 사용빈도가 높은 함수
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr FROM] str)
mysql> select trim(' Seoul, South Korea ');
+------------------------------+
| trim(' Seoul, South Korea ') |
+------------------------------+
| Seoul, South Korea |
+------------------------------+
1 row in set (0.01 sec)
왼쪽 공백 제거
LTRIM()
은 공백만 제거할 수 있으나 leading
은 값을 특정할 수 있다.
mysql> select trim(leading '0' from '0000002850');
+-------------------------------------+
| trim(leading '0' from '0000002850') |
+-------------------------------------+
| 2850 |
+-------------------------------------+
1 row in set (0.00 sec)
오른쪽 공백 제거
RTRIM()
은 공백만 제거할 수 있으나 trailing
은 값을 특정할 수 있다.
mysql> select trim(trailing ',' from 'col1,col2,col3,');
+-------------------------------------------+
| trim(trailing ',' from 'col1,col2,col3,') |
+-------------------------------------------+
| col1,col2,col3 |
+-------------------------------------------+
1 row in set (0.00 sec)
2. SUBSTR(), SUBSTRING()
substr
, substring
은 동일하다.
mysql> select substr('0123456', 2);
+----------------------+
| substr('0123456', 2) |
+----------------------+
| 123456 |
+----------------------+
1 row in set (0.01 sec)
mysql> select substr('0123456', 2, 4);
+-------------------------+
| substr('0123456', 2, 4) |
+-------------------------+
| 1234 |
+-------------------------+
1 row in set (0.01 sec)
음수
를 사용하여 뒤에서 부터 인덱스를 계산한다.
mysql> select substr('0123456', -3);
+-----------------------+
| substr('0123456', -3) |
+-----------------------+
| 456 |
+-----------------------+
1 row in set (0.01 sec)
mysql> select substr('0123456', -3, 1);
+--------------------------+
| substr('0123456', -3, 1) |
+--------------------------+
| 4 |
+--------------------------+
1 row in set (0.00 sec)
from
을 사용.
mysql> select substr('0123456' from -4 for 2);
+---------------------------------+
| substr('0123456' from -4 for 2) |
+---------------------------------+
| 34 |
+---------------------------------+
1 row in set (0.01 sec)
mysql> select substr('0123456', -4, 2);
+--------------------------+
| substr('0123456', -4, 2) |
+--------------------------+
| 34 |
+--------------------------+
1 row in set (0.01 sec)
3. LENGTH()
length
는 계산된 바이트를 리턴한다. UTF-8 한글의 경우 한글자당 3바이트를 사용하므로 3으로 계산된다. Character(문자)별 length계산이 필요한 경우 char_length
를 사용한다.
mysql> select length('choi');
+----------------+
| length('choi') |
+----------------+
| 4 |
+----------------+
1 row in set (0.00 sec)
mysql> select length('최');
+----------------+
| length('choi') |
+----------------+
| 3 |
+----------------+
1 row in set (0.00 sec)
mysql> select char_length('choi');
+----------------+
| length('choi') |
+----------------+
| 4 |
+----------------+
1 row in set (0.00 sec)
mysql> select char_length('최');
+----------------+
| length('choi') |
+----------------+
| 1 |
+----------------+
1 row in set (0.00 sec)
4. LPAD(), RPAD()
mysql> select lpad('2500', 9, '0');
+----------------------+
| lpad('2500', 9, '0') |
+----------------------+
| 000002500 |
+----------------------+
1 row in set (0.00 sec)
mysql> select rpad('123-12-1', 13, '*');
+---------------------------+
| rpad('123-12-1', 13, '*') |
+---------------------------+
| 123-12-1***** |
+---------------------------+
5. CONCAT()
주어진 문자열을 연결한다. null
이 포함된 경우 null
을 리턴한다.number
는 varchar
로 변환된다.
mysql> select concat('my', 'sql', 8);
+------------------------+
| concat('my', 'sql', 8) |
+------------------------+
| mysql8 |
+------------------------+
1 row in set (0.01 sec)
6. LOWER(), UPPER()
주어진 영문자를 대소문자로 변환한다.
mysql> select lower('Hello, Wolrd!');
+------------------------+
| lower('Hello, Wolrd!') |
+------------------------+
| hello, wolrd! |
+------------------------+
1 row in set (0.01 sec)
mysql> select upper('Hello, Wolrd!');
+------------------------+
| upper('Hello, Wolrd!') |
+------------------------+
| HELLO, WOLRD! |
+------------------------+
1 row in set (0.01 sec)
7. LIKE
Sql조건절의 LIKE
구문을 동일하게 Select절에서 사용할 수 있다. 값이 참인 경우 1, 아닌경우 0을 리턴한다.
mysql> select 'MySql8' like 'sql';
+---------------------+
| 'MySql8' like 'sql' |
+---------------------+
| 0 |
+---------------------+
1 row in set (0.01 sec)
mysql> select 'MySql8' like '%sql%';
+-----------------------+
| 'MySql8' like '%sql%' |
+-----------------------+
| 1 |
+-----------------------+
1 row in set (0.01 sec)
number
형에도 사용할 수 있다.
with height_list as(
select 175 as height union all
select 183 as height union all
select 190 as height
)
select height like '18%' from height_list;
0
1
0
반대기능인 NOT LIKE
가 있다.
8. REPLACE()
주어진 문자열에서 특정값을 찾아 변환한다.
mysql> select replace('apple apple apple', 'apple', 'banana');
+-------------------------------------------------+
| replace('apple apple apple', 'apple', 'banana') |
+-------------------------------------------------+
| banana banana banana |
+-------------------------------------------------+
1 row in set (0.01 sec)
위의 예제에서 처음의 apple만 변경하려는 것처럼 정규식이 필요할 때, REGEX_REPLACE
함수를 사용한다.
mysql> select regexp_replace('apple apple apple', '^apple', 'banana');
+---------------------------------------------------------+
| regexp_replace('apple apple apple', '^apple', 'banana') |
+---------------------------------------------------------+
| banana apple apple |
+---------------------------------------------------------+
1 row in set (0.06 sec)
4, 5번째 인자는, 시작부터 몇번째에 매칭된 데이터를 변환할 건지 지정할 수 있다.
mysql> select regexp_replace('a b c d e f', '[a-z]+', 'x', 2, 3);
+----------------------------------------------------+
| regexp_replace('a b c d e f', '[a-z]+', 'x', 2, 3) |
+----------------------------------------------------+
| a b c x e f |
+----------------------------------------------------+
1 row in set (0.01 sec)
반응형
'DataBase' 카테고리의 다른 글
MySql - Public Key Retrieval is not allowed 오류 해결 (0) | 2022.01.27 |
---|---|
오라클 계층형 쿼리, 트리구조로 살펴보기(정렬, 최하위노드 찾기) (0) | 2022.01.26 |
오라클 replace 여러개(문자) 치환하기( regexp_replace 사용 ) (0) | 2022.01.25 |
MySql 날짜 시간 더하기, 빼기(YEAR, MONTH, DAY등 UNIT 정리) (0) | 2021.10.19 |
MySql - 날짜 포맷 datetime to string 변환하기 (vs Oracle to_char 함수 비교 ) (0) | 2021.10.18 |