2016-11-07 1 views
2

교체 I는 다음과 같이 몇 가지 문자열을했습니다 :MySQL; 찾아 내 MySQL 데이터베이스에서

I'm something, Infos S. 12

I 검색 할 패턴은 다음과 같습니다 , Infos S., 번호 (숫자 만)보다 및 문자열 끝보다. 대소 문자를 구별하지 않습니다.

어떻게 검색하고 제거 할 수 있습니까?

나는이 I'm something, Infos S. 12이고 나는 I'm something을 원합니다.

UPDATE my_table SET title_col = REPLACE(title_col, SUBSTRING(title_col, LOCATE(', Infos S. ', title_col), LENGTH(title_col) - LOCATE(')', REVERSE(title_col)) - LOCATE(', Infos S. ', title_col) + 2), '') WHERE title_col LIKE '%(%)%';

어떻게 나머지를 할 :

이것은 내가 지금까지 가지고 무엇인가?

편집 : 다른 쉼표가 있으면 무시해야합니다.

의미 : I'm, something, Infos S. 12 (I'm 다음의 쉼표에 유의하십시오)은 I'm, something이되어야합니다.

답변

2

regexp을 사용하여 열에 지정된 패턴이 있는지 확인한 다음 substring을 사용하여 ,까지 부분 문자열로 문자열을 업데이트 할 수 있습니다.

UPDATE my_table 
SET title_col = SUBSTRING(title_col,1,locate(', Infos',title_col)-1) 
WHERE title_col regexp ', Infos S\\. [0-9]+$' 

regexp 경기는 대소 문자를 구분 기본적으로 있습니다. 대소 문자를 구분하려면 regexp binary을 사용하십시오.

where title_col regexp binary ', Infos S\\. [0-9]+$' 
+0

대소 문자를 구별하지 않으면 예를 들어. 'Infos' 대신에'infos'인가? – David

+0

예. 정확하게. 대문자. * infos *의 문자 조합. –

+0

그래, 고마워. 내 경우에는 상관 없어. – David

관련 문제