2009-11-09 4 views
0

PHP를 사용하여이 작업을 수행하는 방법을 알고 있지만 MySQL에서 간단한 해결책을 제공하는지 궁금합니다. MySQL : 업데이트 할 때 빈 문자열 무시

UPDATE users SET fname = 'badooka', lname = '' WHERE user_id='322'; 

값이 비어 (LNAME이 특정 경우에) 어떻게 빈 문자열로 원본을 덮어 쓰는 대신 그것을 무시 않는 경우

?

+1

나는 Myles 응답 'UPDATE users SET fname ='badooka ', lname =' 'WHERE user_id ='322 'AND lname! =' ';에 동의 할 것입니다. 이렇게하면 원래 문자열을 빈 문자열로 덮어 쓰는 대신 빈 값 (이 경우 lname)을 무시하는 것입니다. – Rachel

답변

2

당신은 UPDATE users SET fname = 'badooka', lname = '' WHERE user_id='322' AND lname != '';을 의미합니까 아니면 데이터베이스가 비어있는 필드를 업데이트하지 않았습니까? 후자가 아니라면 더 간단한 방법은 없지만 성능이 저하되면 이미 업데이트중인 행의 추가 필드를 업데이트 할 수 없습니다.

1

이 시도 : 기본적인 생각

UPDATE users 
SET fname = IF(CHAR_LENGTH('badooka'),'badooka',fname), lname = IF(CHAR_LENGTH(''),'',lname) 
WHERE user_id='322'; 

합니다. CHAR_LENGTH()가 0을 반환하면 원래 값을 사용합니다.

1

인수 그래서 LNAME가 비어 있지 않은 경우에만 LNAME를 업데이트 할 경우

의 첫 번째 null 이외의 값을 선택 것이다 COALESCE 연산자는,이

UPDATE users SET fname = 'badooka', COALESCE(lname, SELECT lname FROM users where user_id='322') where user_id='322' 

같은 일을 할 수있다 그게 무슨 뜻이야? 당신이 많은 일을한다면 이것은 약간의 성과를 낼 수도 있고, 다른 누군가는 더 좋은 방법을 알고있을 것입니다.

+1

이제는 대답이 받아 들여 졌음을 알았습니다. 질문자가 null이 아닌 값을 덮어 쓰지 않는 것을 의미하는 것으로 보입니다. 와서 봐라. 나는 아직도 사건이 바뀌면 이것이 대답 일 것이라고 생각한다. ... – hgh

+0

혼란에 대해 미안하다. – HyderA