2013-04-20 2 views
1

이름 필드에 "NEW_"텍스트를 미리 추가해야하는 채워진 MySQL TABLE이 있습니다. (긴 이야기지만 이것은 지금해야 할 일이다.)MySQL : 기존 열의 데이터에 텍스트를 미리 추가하는 방법은 무엇입니까?

나는 이것이 UPDATE와 함께 할 수 있다고 상상하지만 'name_'열의 시작 부분에 "NEW_"를 추가하는 방법을 모르겠다. . 또한 PHP로 작업하기 때문에 각 레코드를 읽고 이름 필드를 추출한 후 PHP를 사용하여 레코드를 업데이트해야합니다. 또는이 모든 작업을 MySQL로 할 수 있습니까?

+0

HTTP : //stackoverflow.com/questions/680801/prepending-a-string -to-a-column-value-in-mysql – Victor

답변

2

이 같은 CONCAT를 사용할 수 있습니다

UPDATE tbl SET name=CONCAT('NEW_',name) 
WHERE name NOT LIKE 'NEW\_%'; 

두 번째 라인이 시작 이미 NEW_과 열에서 작동이 중지됩니다.

+0

문제가 있습니다. "New Time Bar"와 같은 데이터가 들어있는 'name'필드는 "NEW_New Time Bar"로 변경되지 않습니다. – Edward

+0

흠, 예, _가 와일드 카드 문자임을 잊어 버렸습니다. 그것을 리터럴로 보려면'NEW \ _'을 사용해야합니다. –

2

사용이 쿼리

UPDATE table_name set `name` = CONCAT('NEW_',`name`) 
+0

귀하의 예에서 이름이 왜 이름으로 나타 납니까? 필드 이름을 둘러 쌀 수 없다는 차이점은 무엇입니까? 감사! – Edward

+0

@Edward는 컬럼 이름으로 mysql 예약어를 사용할 때 중요합니다. 예를 들어 group은 mysql의 예약어입니다. 'select group from tbl_tp' 만 사용하면 에러가 발생합니다. 그러나 ** tbl_tp **에서'''group'''을 선택하면 오류가 발생하지 않고 쿼리가 실행됩니다. –

+1

알 겠어. 예약어를 보호 할 방법은 모든 예약어가 무엇인지 기억할 필요없이 '주변을 둘러싼 다. 설명해 주셔서 감사합니다! – Edward

0

당신은 이런 식으로 그것을 할 만 할 수는 : 자신에 의해 전에 게시

UPDATE myTable SET name = CONCAT('NEW_',name);

As이 작동하지 않습니다

UPDATE myTable SET name = 'NEW_' + name;

관련 문제