नल मान के साथ कॉलम को कैसे अपडेट करें


148

मैं mysql का उपयोग कर रहा हूं और एक शून्य मान के साथ एक कॉलम को अपडेट करने की आवश्यकता है। मैंने इसे कई अलग-अलग तरीकों से आज़माया है और मुझे जो सबसे अच्छा मिला है वह एक खाली स्ट्रिंग है।

क्या ऐसा करने के लिए एक विशेष वाक्यविन्यास है?


4
क्या स्तंभ एक पूर्ण मान की अनुमति देता है?
प्रहार करें

8
अद्यतन तालिका सेट कॉलम = पूरा कहां ...; काम नहीं करता?

1
नहीं, कदापि नहीं। यह वास्तव में अजीब है
जिम

जवाबों:


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 में एक विशेष मान है। तो एक संपत्ति को शून्य करने के लिए, यह करें:

UPDATE table SET column = NULL;

अब, मैं स्पष्ट करता हूं। Php के माध्यम से मैं पीडीओ का उपयोग कर रहा हूं और एक क्वेरी के माध्यम से अपडेट कर रहा हूं।
जिम

1
MySQL मैनुअल में कहा गया है कि यदि स्तंभ NULL मानों की अनुमति नहीं देता है, तो इसे NULL पर सेट करने से डेटा प्रकार (जैसे एक रिक्त स्ट्रिंग) के लिए डिफ़ॉल्ट मान हो जाएगा। क्या आप 100% हैं कि आपका कॉलम NULL को अनुमति देता है? क्या आप हमें क्रिएट टेबल दिखा सकते हैं?

मैं 1000% निश्चित हूं। मैंने दो बार इसकी जाँच की है। मुझे एक बार और देखने दो।
जिम

हाँ, यह वास्तव में अशक्त है। मैं डेटा में अपने frnt अंत सॉफ्टवेयर द्वारा उत्पादित NULL को देख सकता हूं जो अशक्त होना चाहिए।
जिम


6

यह देखना याद रखें कि क्या आपका कॉलम अशक्त हो सकता है। आप उस का उपयोग कर सकते हैं

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

उपर्युक्त उत्तरों में, कई तरीके और पुनरावृत्तियाँ उसी के लिए सुझाई गई हैं। मैं एक उत्तर की तलाश में रहता था जैसा कि उल्लेख किया गया है, यह सवाल है, लेकिन यहां नहीं मिला।

लेकिन उपरोक्त प्रश्न के विपरीत "एक शून्य मान के साथ एक स्तंभ को अपडेट करें" हो सकता है "पूर्ण करने के लिए कॉलम में सभी अपडेट्स को अपडेट करें"

ऐसी स्थिति में निम्नलिखित कार्य करता है

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

isसाथ ही is notmysql में काम करता है



1

खाली स्ट्रिंग का एक और संभावित कारण, एक सच्चे अशक्त के बजाय यह है कि क्षेत्र एक सूचकांक है या एक सूचकांक का हिस्सा है। यह मेरे साथ हुआ: phpMyAdmin का उपयोग करते हुए, मैंने " Null " चेकबॉक्स की जाँच करके " सहेजें " बटन को दबाकर NULLs को अनुमति देने के लिए अपनी एक तालिका में एक फ़ील्ड की संरचना को संपादित किया । " टेबल मूल्य निर्धारण को सफलतापूर्वक बदल दिया गया है " प्रदर्शित किया गया था इसलिए मैंने माना कि परिवर्तन हुआ - यह नहीं हुआ। उन सभी फ़ील्डों को NULL में सेट करने के लिए एक अद्यतन करने के बाद , वे, इसके बजाय, खाली तारों पर सेट थे , इसलिए मैंने फिर से तालिका संरचना पर एक नज़र डाली और देखा कि " अशक्त"उस फ़ील्ड के लिए कॉलम ' नहीं ' पर सेट किया गया था । तभी मुझे एहसास हुआ कि यह फ़ील्ड प्राथमिक कुंजी का हिस्सा था !


1

यदि आप null वैल्यू सेट करना चाहते हैं तो अपडेट क्वेरी सेट कॉलम वैल्यू का उपयोग करके NULL (बिना कोट्स) के अपडेट करें tablename सेट कॉलमनाम = NULL

हालाँकि, यदि आप सीधे mysql कार्यक्षेत्र के अंदर फ़ील्ड मान संपादित कर रहे हैं, तो चयनित कॉलम में शून्य मान सम्मिलित करने के लिए (Esc + del) कीस्ट्रोक का उपयोग करें


0

यदि आप अनुसरण करते हैं

UPDATE table SET name = NULL

फिर नाम "" नहीं है NULL IN MYSQL का मतलब है आपकी क्वेरी

SELECT * FROM table WHERE name = NULL अपने आप को काम या निराश न करें


0

मुझे संदेह है कि यहाँ समस्या यह है कि उद्धरण आपके स्ट्रिंग मान में शाब्दिक के रूप में दर्ज किए गए थे। आप इन स्तंभों का उपयोग करके शून्य करने के लिए सेट कर सकते हैं:

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

या जहां विशेष रिकॉर्ड के लिए NULL सेट करें, वहां पर उपयोग करें

UPDATE `table_name` SET `column_you_want_set_null`= NULL WHERE `column_name` = 'column_value' 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.