MySQL - String Function을 사용할 때 주의사항!!!

임재현·2021년 4월 30일
0

MySQL

목록 보기
17/52
post-custom-banner

UDEMY - The Ultimate MySQL Bootcamp를 수강하면서 쓴 글

전글 (REPLACE)에서도 썼지만 꽤 중요한 내용인 것 같아 따로 빼서 쓰게 되었다.

❗️주의 : 모든 String Function들은 문자나 문자열을 숫자(물론 INT형이 아니라 STRING 타입인 숫자. 어차피 처음 테이블 만들 때 형 지정해주긴했다.)로 바꿔줄 떄 반드시 ''를 붙여주도록 하자. 이게 터미널에서 할 때는 상관없는데, work bench나 다른 에디터 사용해서 할 때는 쿼리가 실행이 안될 수 있다. 그리고 원래 문자나 문자열에 ''를 붙여주는게 정석이므로 그렇게 하는 습관을 들이도록 하자!

❗️❗️❗️그리고, String Function을 쓰고 여는 괄호(를 붙일 때 띄어쓰기 하지 말고 바로 붙여 주는 것이 좋다.

예)

SELECT 
	SUBSTRING(
		REPLACE(title,'e',3),
        1,
        10
	) 
FROM books;

SUBSTRING( 이런식으로 띄어쓰기 하지 말고 여는 괄호를 펑션 바로 옆에 붙여주는 것이 좋다.

잘못된 예)

SELECT 
	SUBSTRING
    (
	REPLACE(title,'e','3'),
        1,
        10
    )
FROM books;

이런식으로 SUBSTRING함수를 쓰고 한칸띄고(엔터를 누르고) 괄호를 열게 되면   'FUNCTION book_shop.SUBSTRING does not exist.'이런 에러가 발생할 수 있다. SUBSTRING을 함수로 보는 것이 아니라 칼럼으로 보기 때문에 생기는 에러이다. SUBSTRING이라는 칼럼은 당연히 없기 때문에 에러가 발생한다.

++이따가 나올 거지만 함수를 쓸 때 헷갈리지 않게(?) 쓰는 것도 중요하다. 이부분은 강의에서 그대로 따온 거를 보는 게 이해가 쉬울 것 같다. 아래 글에서 UPPER와 CONCAT함수의 위치를 주목해서 보면 알 수 있다.


Note about string functions

Hi everyone,

I have two important notes for you.

Firstly, before you move onto the next lecture, please remember that order is important when dealing with combining/wrapping certain string functions.

For example:

This works:

SELECT UPPER(CONCAT(author_fname, ' ', author_lname)) AS "full name in caps"
FROM books;

While this does not:

SELECT CONCAT(UPPER(author_fname, ' ', author_lname)) AS "full name in caps" 
FROM books;

UPPER only takes one argument and CONCAT takes two or more arguments, so they can't be switched in that way.

You could do it this way, however:

SELECT CONCAT(UPPER(author_fname), ' ', UPPER(author_lname)) AS "full name in caps"
FROM books;
But, the first example above would be better (more DRY*) because you wouldn't need to call UPPER two times.

*Don't Repeat Yourself


profile
임재현입니다.
post-custom-banner

0개의 댓글