null 값으로 열을 업데이트하는 방법


148

mysql을 사용하고 있으며 null 값으로 열을 업데이트해야합니다. 나는 이것을 여러 가지 방법으로 시도했으며 내가 얻은 최선은 빈 문자열입니다.

이를위한 특별한 구문이 있습니까?


4
열에 NULL 값이 허용됩니까?
찌르다

8
업데이트 테이블 SET 열 = NULL WHERE ...; 작동하지 않습니까?

1
아뇨, 전혀 아닙니다. 정말 이상합니다
jim

답변:


226

특별한 문법은 없습니다 :

CREATE TABLE your_table (some_id int, your_column varchar(100));

INSERT INTO your_table VALUES (1, 'Hello');

UPDATE your_table
SET    your_column = NULL
WHERE  some_id = 1;

SELECT * FROM your_table WHERE your_column IS NULL;
+---------+-------------+
| some_id | your_column |
+---------+-------------+
|       1 | NULL        |
+---------+-------------+
1 row in set (0.00 sec)

고마워 다니엘. 이 문제가 내 응용 프로그램 코드에있을 수 있다고 확신합니다.
jim

42

NULLSQL에서 특별한 값입니다. 따라서 속성을 null로 설정하려면 다음을 수행하십시오.

UPDATE table SET column = NULL;

이제 명확히하겠습니다. PHP를 통해 PDO를 사용하고 쿼리를 통해 업데이트하고 있습니다.
jim

1
MySQL 매뉴얼은 열이 NULL 값을 허용하지 않으면 NULL로 설정하면 데이터 유형의 기본값 (예 : 빈 문자열)이 발생한다고 명시합니다. 열이 NULL을 허용한다는 100 %입니까? CREATE TABLE을 보여줄 수 있습니까?

나는 1000 % 확신합니다. 나는 그것을 두 번 확인했다. 한 번만 더 보자.
jim

예, 실제로 null입니다. frnt 엔드 소프트웨어가 널 (null)이어야하는 데이터에서 생성 된 NULL을 볼 수 있습니다.
jim

20

IS대신에 사용하면 = 문제 예제 구문이 해결됩니다.

UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;

6

열이 null 일 수 있는지 확인하십시오. 당신은 그것을 사용하여 할 수 있습니다

mysql> desc my_table;

열이 널이 될 수없는 경우 값을 널로 설정하면 캐스트 값이됩니다.

여기 예

mysql> create table example ( age int not null, name varchar(100) not null );
mysql> insert into example values ( null, "without num" ), ( 2 , null );
mysql> select * from example;
+-----+-------------+
| age | name        |
+-----+-------------+
|   0 | without num |
|   2 |             |
+-----+-------------+
2 rows in set (0.00 sec)

mysql> select * from example where age is null or name is null;
Empty set (0.00 sec)

4

비슷한 문제에 직면 한 사람들은 SET = NULL쿼리를 '시뮬레이션'할 때 PHPMyAdmin이 오류를 던질 것이라는 것을 알았습니다 . 붉은 청어입니다. 쿼리를 실행하면 모든 것이 잘됩니다.


PHPMyAdmin이 NULL 근처에 인식 할 수없는 키워드가 있다고 주장했기 때문에 감사합니다. 귀하의 답변을 읽은 후 쿼리를 실행하고 의도 한대로 실행되었습니다.
dading84

4

위의 답변에서 여러 가지 방법과 반복이 동일하게 제안되었습니다. 언급 한 질문에 대한 답변을 계속 찾았지만 여기서 찾을 수 없었습니다.

그러나 위의 질문과 반대 인 "널 값으로 열 업데이트"는 "컬럼의 모든 ROWS를 NULL로 업데이트"일 수 있습니다.

그런 상황에서 다음 작품

update table_name
set field_name = NULL
where field_name is not NULL;

isis notmysql 에서도 작동합니다.



1

빈 문자열보다는 또 다른 가능한 이유 진정한 는 null 필드가 인덱스 또는 인덱스의 일부이다. 이것은 나에게 일어났다 : phpMyAdmin을 사용 하여 " Null "체크 박스를 체크 한 다음 " Save "버튼을 눌러 NULL 을 허용하도록 테이블 중 하나의 필드 구조를 편집했다 . " 테이블 가격이 성공적으로 변경되었습니다 "가 표시되었으므로 변경이 발생했다고 가정했습니다. UPDATE 를 수행하여 해당 필드를 모두 NULL 로 설정 한 후 빈 문자열로 설정 되었으므로 테이블 구조를 다시 살펴보고 " Null해당 필드의 "열이 ' 아니오 ' 로 설정되었습니다 . 그 때 필드가 기본 키의 일부라는 것을 깨달았습니다 !


1

update query set column value를 사용하여 널값을 설정하려면 (따옴표없이) update tablename set columnname = NULL을 설정하십시오.

그러나 mysql Workbench 내에서 필드 값을 직접 편집하는 경우 (Esc + del) 키 입력을 사용하여 선택한 열에 null 값을 삽입하십시오


0

당신이 따르는 경우

UPDATE table SET name = NULL

그런 다음 이름은 ""가 아닙니다. NULL IN MYSQL은 쿼리를 의미합니다.

SELECT * FROM table WHERE name = NULL 일을하거나 자신을 실망시키지 마십시오


0

여기서 문제는 따옴표가 문자열 값에 리터럴로 입력되었다는 것입니다. 다음을 사용하여이 열을 null로 설정할 수 있습니다.

UPDATE table SET col=NULL WHERE length(col)<3;

물론 먼저 다음과 같은 값으로이 값이 ""인지 확인해야합니다.

SELECT DISTINCT(col) FROM table WHERE length(col)<3;

0

모든 레코드에 NULL 설정하면 다음을 시도하십시오.

UPDATE `table_name` SET `column_you_want_set_null`= NULL

또는 특수 레코드에 WHERE를 사용하려면 NULL 설정하십시오.

UPDATE `table_name` SET `column_you_want_set_null`= NULL WHERE `column_name` = 'column_value' 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.