DB/문법

MySQL Replace() 함수

ssury94 2024. 11. 27. 18:31
 
 

목차 △닫기

     

    문자열의 내용을 바꾸는 함수 replace()

    특정 문자나 문자열을 다른 문자나 문자열로 대체하는 데 사용됩니다.

    replace(컬럼, '바꾸고 싶은 문자열', '바꿀 문자열')

     

    -- 책 제목에 The 가 있으면 Hello로 바꿔서 가져오자.

     

    SELECT title, REPLACE (title,'The','Hello')
    FROM books b ;

    -- 책 제목에 The가 있으면 제거하고 가져오세요.

    SELECT title ,REPLACE (title,'The ','')
    FROM books b ;

    ' '을 이용하여 공백만 넣어주면 됩니다.

     

     


    처음 만난 디버그

     

    예제문제:

    책 제목을 처음부터 10글자만 가져오고, 뒷부분에는 ...을 붙여서 가져오세요.

    "CONCAT으로 해결하기"

     

    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