sql
[MySql] TABLE 에서 특정 문자열을 제거한 후 그 문자열을 바로 저장
열공_중
2017. 2. 10. 16:47
상당한 수의 특정 field 에 동일 한 값을 제거 해야될 일이 생겼다.
"가나다라바사아자차카타파하" 란 문자열이 있을경우
"가나다" 를 제외한 "라바사아자차카타파하" 문자열만 남겨서 다시 저장해야했다.
그래서 알아낸 select SUBSTRING_INDEX(str,delim,count); 함수
특정 문자열에서 검색추가된 문자열을 제거 후 반환한다.
검색후 바로 업데이트 하기 위해 업데이트문을 사용했고
update delete 문에서는 동기화 오류를 피하기 위해 기교값에 같은 table의 from where 문을 사용할 수 없기에
sub query 문을 사용해서 처리했다.
update my_table set
my_str=(select SUBSTRING_INDEX(
(SELECT temp from(SELECT mystr as temp from my_table WHERE my_table__num = "primary key" ) as val), '가나다',-1))
WHERE my_table_num ="primary key";
my_table에서 해당 문자열을 불러온후("가나다라바사아자차카타파하")
"가나다"를 찾아내고 삽입된 count (-1) 만큼 돌아간되 그 이후 값들을 반환받고("라바사아자차카타파하")
my_table 의 my_str에 해당 값을 update 한다.
의외로 종종 쓰인다 ㅎ