MySQL에서 INSERT() 함수를 사용하면 테이블의 특정 열 값에 새 문자열을 삽입할 수 있습니다. 이때 핵심은 첫 번째 매개변수 자리에 원본 문자열 대신 열(column) 이름을 지정하는 것입니다.
INSERT() 함수의 기본 문법
INSERT(원본_문자열, 위치, 삭제할_길이, 삽입할_문자열)
원본 문자열 자리에 열 이름을 넣으면, 해당 열의 모든 행 값에 대해 문자열 삽입이 일괄 적용됩니다.
예제 1: 전체 행에 문자열 삽입하기
예를 들어, 'Student' 테이블의 'year_of_admission' 열 값 뒤에 '/Old'라는 문자열을 추가하고 싶다면 다음과 같이 쿼리를 작성합니다.
mysql> Select INSERT(year_of_admission,5,0,'/Old')As 'Old Admissions' From Student; +-----------------+ | Old Admissions | +-----------------+ | 2001/Old | | 2010/Old | | 2009/Old | | 2017/Old | | 2000/Old | +-----------------+ 5 rows in set (0.00 sec)
위 쿼리에서 세 번째 인수가 0인 이유는 기존 문자를 삭제하지 않고 해당 위치에 새 문자열을 그대로 삽입하기 위함입니다. 즉, 5번째 위치부터 '/Old'가 추가되어 '2001'이 '2001/Old'로 변환됩니다.
예제 2: WHERE 절로 조건부 적용하기
WHERE 절을 함께 사용하면 특정 조건을 만족하는 행에만 문자열을 삽입할 수 있습니다. 입학 연도가 2017년 미만인 학생들만 대상으로 하려면 다음과 같이 작성합니다.
mysql> Select INSERT(year_of_admission,5,0,'/Old')As 'Old Admissions' From Student WHERE year_of_admission < '2017'; +----------------+ | Old Admissions | +----------------+ | 2001/Old | | 2010/Old | | 2009/Old | | 2000/Old | +----------------+ 4 rows in set (0.00 sec)
결과를 보면 2017년 입학 데이터는 제외되고 조건에 맞는 4개의 행만 출력된 것을 확인할 수 있습니다.
정리
INSERT() 함수의 첫 번째 인수에 열 이름을 사용하면 테이블 전체 또는 조건에 맞는 행들의 값을 손쉽게 변환하여 조회할 수 있습니다. 다만 이 방법은 실제 테이블 데이터를 변경하는 것이 아니라 조회 결과에만 적용되므로, 원본 데이터를 수정하려면 UPDATE 문과 함께 활용해야 한다는 점을 기억하세요.