PHP를 사용하여이 작업을 수행하는 방법을 알고 있지만 MySQL에서 간단한 해결책을 제공하는지 궁금합니다. MySQL : 업데이트 할 때 빈 문자열 무시
UPDATE users SET fname = 'badooka', lname = '' WHERE user_id='322';
값이 비어 (LNAME이 특정 경우에) 어떻게 빈 문자열로 원본을 덮어 쓰는 대신 그것을 무시 않는 경우
?PHP를 사용하여이 작업을 수행하는 방법을 알고 있지만 MySQL에서 간단한 해결책을 제공하는지 궁금합니다. MySQL : 업데이트 할 때 빈 문자열 무시
UPDATE users SET fname = 'badooka', lname = '' WHERE user_id='322';
값이 비어 (LNAME이 특정 경우에) 어떻게 빈 문자열로 원본을 덮어 쓰는 대신 그것을 무시 않는 경우
?당신은 UPDATE users SET fname = 'badooka', lname = '' WHERE user_id='322' AND lname != '';
을 의미합니까 아니면 데이터베이스가 비어있는 필드를 업데이트하지 않았습니까? 후자가 아니라면 더 간단한 방법은 없지만 성능이 저하되면 이미 업데이트중인 행의 추가 필드를 업데이트 할 수 없습니다.
이 시도 : 기본적인 생각
UPDATE users
SET fname = IF(CHAR_LENGTH('badooka'),'badooka',fname), lname = IF(CHAR_LENGTH(''),'',lname)
WHERE user_id='322';
합니다. CHAR_LENGTH()가 0을 반환하면 원래 값을 사용합니다.
인수 그래서 LNAME가 비어 있지 않은 경우에만 LNAME를 업데이트 할 경우
의 첫 번째 null 이외의 값을 선택 것이다 COALESCE 연산자는,이
UPDATE users SET fname = 'badooka', COALESCE(lname, SELECT lname FROM users where user_id='322') where user_id='322'
같은 일을 할 수있다 그게 무슨 뜻이야? 당신이 많은 일을한다면 이것은 약간의 성과를 낼 수도 있고, 다른 누군가는 더 좋은 방법을 알고있을 것입니다.
나는 Myles 응답 'UPDATE users SET fname ='badooka ', lname =' 'WHERE user_id ='322 'AND lname! =' ';에 동의 할 것입니다. 이렇게하면 원래 문자열을 빈 문자열로 덮어 쓰는 대신 빈 값 (이 경우 lname)을 무시하는 것입니다. – Rachel