문자열의 내용을 바꾸는 함수 replace()
특정 문자나 문자열을 다른 문자나 문자열로 대체하는 데 사용됩니다.
replace(컬럼, '바꾸고 싶은 문자열', '바꿀 문자열')
-- 책 제목에 The 가 있으면 Hello로 바꿔서 가져오자.
SELECT title, REPLACE (title,'The','Hello')
FROM books b ;
-- 책 제목에 The가 있으면 제거하고 가져오세요.
SELECT title ,REPLACE (title,'The ','')
FROM books b ;
' '을 이용하여 공백만 넣어주면 됩니다.
처음 만난 디버그
예제문제:
책 제목을 처음부터 10글자만 가져오고, 뒷부분에는 ...을 붙여서 가져오세요.
MySQL Concat() 함수
MySQL 함수란?데이터베이스에서 계산을 수행하고 데이터를 조작하며 결과를 반환하는 미리 정의된 작업입니다.함수들은 복잡한 쿼리를 단순화하고 반복적인 작업을 자동화하는 데 도움을 줍니
maeilcoding.tistory.com
SELECT title, REPLACE(title,SUBSTR(title,11),'...')
from books b ;
옆자리 수강생들이 11번째 이후의 글자열을 "..."으로 대체하는거니까 replace로도 가능할 것 같다 해서
따라해봤는데
다른 제목들은 의도한 대로 잘 나오는데 White Noise가 Whit...Nois...로 나오는거에요.
IF함수 쓰지않고도 10개 문자열보다 짧으면 ...이 안붙고,
길면 붙게 만드는 좋은 함수라고 생각는데 어째서지?
11번째 문자열에 뭐가 있나?
SELECT title, SUBSTR(title,11)
from books b ;
W | h | i | t | e | n | o | i | s | e | |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
우연하게도 11번째 문자열인 e와 5번째 문자열인 e가 같아서
두개의 e를 "..."으로 변환하여 생긴 문제였습니다. 와우 디버그 해결 똑똑하시다!
* 컬럼에_띄어쓰기는_되도록_하지_맙시다. 언더바를_활용하세요.
(사용자체는 가능합니다. "컬 럼" '컬 럼' 처럼요.)
* 함수를 이용해서 데이터를 사용하기 편하게 가공할 수 있습니다.
* 가공한 컬럼이므로 데이터베이스에 저장되지 않습니다.
* 함수에는 공백을 쓰지 맙시다. concat () X / concat() O