SQL 함수 (문자열)

다음의 데이터로 MySQL에서 진행하였습니다.

data generate site 에서 데이터를 랜덤으로 생성하였습니다.

DROP TABLE `person`;

CREATE TABLE `person` (
  `id` mediumint(8) unsigned NOT NULL auto_increment,
  `name` varchar(255) default NULL,
  `age` mediumint default NULL,
  `country` varchar(100) default NULL,
  PRIMARY KEY (`id`)
) AUTO_INCREMENT=1;

INSERT INTO `person` (`name`,`age`,`country`) VALUES ("Harriet",14,"Madagascar");
INSERT INTO `person` (`name`,`age`,`country`) VALUES ("Shad",27,"Canada");
INSERT INTO `person` (`name`,`age`,`country`) VALUES ("Georgia",45,"Nigeria");
INSERT INTO `person` (`name`,`age`,`country`) VALUES ("Anastasia",60,"Guernsey");
INSERT INTO `person` (`name`,`age`,`country`) VALUES ("George",53,"Myanmar");
INSERT INTO `person` (`name`,`age`,`country`) VALUES ("Brynn",45,"Niger");
INSERT INTO `person` (`name`,`age`,`country`) VALUES ("Emery",21,"Saint Vincent and The Grenadines");
INSERT INTO `person` (`name`,`age`,`country`) VALUES ("Devin",10,"New Caledonia");
INSERT INTO `person` (`name`,`age`,`country`) VALUES ("Marcia",37,"Palau");
INSERT INTO `person` (`name`,`age`,`country`) VALUES ("Pandora",70,"Trinidad and Tobago");
INSERT INTO `person` (`name`,`age`,`country`) VALUES ("Kalia",45,"Estonia");
INSERT INTO `person` (`name`,`age`,`country`) VALUES ("Lacey",82,"Micronesia");

위의 쿼리문의 결과 테이블 person은 다음과 같이 생겼습니다.

Screen Shot 2021-09-10 at 12 50 17 PM

LOWER

모든 문자를 소문자로 만들어 출력합니다.

SELECT name, LOWER(name) FROM person;

Screen Shot 2021-09-10 at 12 58 43 PM

UPPER

모든 문자를 대문자로 만들어 출력합니다.

SELECT UPPER(name) FROM person;

Screen Shot 2021-09-10 at 12 55 22 PM

LENGTH

문자의 길이를 출력합니다.

SELECT name, LENGTH(name) FROM person;

Screen Shot 2021-09-10 at 12 54 42 PM

SUBSTR

문자열의 일부를 출력합니다. SUBSTR(열이름, 시작위치, 자릿수) 시작위치로부터 몇자리수까지 출력을 할 것인지에 대한 함수입니다.

SELECT name, SUBSTR(name,1,2) FROM person;

Screen Shot 2021-09-10 at 1 17 48 PM

RTRIM

오른쪽 공백문자열을 제거해서 출력합니다. 이미지에 보이는게 공백이 안없어져있는것처럼 보이지만 실제로는 test라는 문자 오른쪽의 공백이 모두 없어져있는 상태이다. RTRIM(‘test ‘)라는 컬럼명을 표현하기위해 저렇게 그냥 공백이 있어보이는 것일 뿐입니다.

SELECT RTRIM(‘test ‘);

Screen Shot 2021-09-10 at 1 31 57 PM

LTRIM

왼쪽 공백문자열을 제거해서 출력합니다.

SELECT LTRIM(‘ test’);

Screen Shot 2021-09-10 at 1 36 11 PM

TRIM

문자열의 오른쪽, 왼쪽 공백을 제거하여 출력합니다.

SELECT TRIM(‘ test ‘);

Screen Shot 2021-09-10 at 1 38 36 PM

REPLACE

특정 문자를 원하는 문자로 바꾸어 출력합니다. 지금의 예에서는 ‘a’를 ‘b’로 바꾸어 출력하고 있습니다.

  • REPLACE(열이름, 바꾸길 원하는 문자, 바꾸고 싶은 문자)
  • 조금 더 쉽게 말해보면 REPLACE(열이름, A, B) A라는 문자를 B로 바꿔서 출력합니다.

SELECT name, REPLACE(name, ‘a’, ‘b’) FROM person;

Screen Shot 2021-09-10 at 1 42 47 PM

COALESCE

조건에 따라 여러 가지 값으로 치환한다.

첫번째로 NULL이 아닌 값을 반환을 합니다. 만약 모든 값이 NULL이면 최종적으로도 NULL을 반환합니다. 아래의 다양한 예를 통해 감을 익혀보세요.

Example 1

SELECT COALESCE(NULL, ‘A’, ‘B’, NULL);

결과

A

Example 2

SELECT COALESCE(‘A’, NULL, ‘B’, NULL);

결과

A

Example 3

SELECT COALESCE(NULL, 1, 2, 3, NULL, ‘B’, NULL);

결과

1

Example 4

SELECT COALESCE(NULL, NULL, ‘test’, NULL);

결과

test