UDEMY - The Ultimate MySQL Bootcamp를 수강하면서 쓴 글
전글 (REPLACE)에서도 썼지만 꽤 중요한 내용인 것 같아 따로 빼서 쓰게 되었다.
❗️주의 : 모든 String Function들은 문자나 문자열을 숫자(물론 INT형이 아니라 STRING 타입인 숫자. 어차피 처음 테이블 만들 때 형 지정해주긴했다.)로 바꿔줄 떄 반드시 ''를 붙여주도록 하자. 이게 터미널에서 할 때는 상관없는데, work bench나 다른 에디터 사용해서 할 때는 쿼리가 실행이 안될 수 있다. 그리고 원래 문자나 문자열에 ''를 붙여주는게 정석이므로 그렇게 하는 습관을 들이도록 하자!
예)
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함수의 위치를 주목해서 보면 알 수 있다.
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