নাল মান সহ কলাম কীভাবে আপডেট করবেন


148

আমি মাইএসকিএল ব্যবহার করছি এবং নাল মান সহ একটি কলাম আপডেট করতে হবে। আমি এই বিভিন্ন উপায়ে চেষ্টা করেছি এবং আমি যে সেরাটি অর্জন করেছি তা হ'ল খালি স্ট্রিং।

এটি করার জন্য একটি বিশেষ বাক্য গঠন আছে?


4
কলামটি কি নুল মানকে মঞ্জুরি দেয়?
অকর্মা

8
আপডেট টেবিল SET কলাম = নীল যেখানে ...; কাজ করে না?

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)

ধন্যবাদ ড্যানিয়েল আমি একধরনের ব্যাপারে নিশ্চিত যে এই সমস্যাটি আমার অ্যাপ্লিকেশন কোডে থাকতে পারে
জিম

42

NULLএসকিউএল এর একটি বিশেষ মান। সুতরাং কোনও সম্পত্তি বাতিল করতে, এটি করুন:

UPDATE table SET column = NULL;

এখন, আমি স্পষ্ট করা যাক। পিএইচপি এর মাধ্যমে আমি পিডিও ব্যবহার করছি এবং একটি ক্যোয়ারির মাধ্যমে আপডেট করছি।
জিম

1
মাইএসকিউএল ম্যানুয়ালটিতে বলা হয়েছে যে কলামটি যদি ন্যূনুয়াল মানগুলিকে অনুমতি না দেয় তবে এটিকে এনওএলএল সেট করার ফলে ডেটা টাইপের (যেমন একটি খালি স্ট্রিং) ডিফল্ট মান হবে। আপনি কি 100% আপনার কলামটি নুলকে অনুমতি দেয়? আপনি আমাদের তৈরি টেবিল প্রদর্শন করতে পারেন?

আমি 1000% নিশ্চিত আমি এটি দুবার পরীক্ষা করে দেখেছি। আমাকে আরও একবার দেখা যাক।
জিম

হ্যাঁ, এটি আসলে নাল। আমি নালাগুলি হওয়া উচিত এমন ডেটাতে আমার ফ্রন্ট এন্ড সফ্টওয়্যার দ্বারা উত্পাদিত 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প্রশ্নের সিমুলেট করার সময় , পিএইচপিএমআইএডমিন একটি ত্রুটি ছুঁড়ে মারবে। এটি একটি লাল রঙের হেরিং .. শুধু ক্যোয়ারী চালান এবং সবকিছু ঠিকঠাক হবে।


ধন্যবাদ, আমি এখানে খুঁজছিলাম কারণ পিএইচপিএমআইএইডমিন দাবি করেছেন যে এনইউএলএল এর কাছে একটি অপরিজ্ঞাত কীওয়ার্ড রয়েছে। আপনার উত্তর পড়ার পরে, আমি ক্যোয়ারীটি চালিয়েছি এবং এটি উদ্দেশ্য হিসাবে কার্যকর করা হয়েছে।
ডেডিং 84

4

উপরের উত্তরে, এর জন্য অনেকগুলি উপায় এবং পুনরাবৃত্তি প্রস্তাব করা হয়েছে। আমি যেমন উত্তর হিসাবে উত্তর চেয়েছি ততই খুঁজেছি কিন্তু এখানে এটি খুঁজে পেল না।

তবে উপরোক্ত প্রশ্নের বিপরীতে "একটি শূন্য মান সহ একটি কলাম আপডেট করুন" হতে পারে "কলমে সমস্ত সারিগুলি আপডেট করুন"

যেমন একটি পরিস্থিতিতে নিম্নলিখিত কাজ

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

isপাশাপাশি is notmysql এ কাজ করে



1

সত্য শূন্যের চেয়ে খালি স্ট্রিংয়ের আর একটি সম্ভাব্য কারণ হ'ল ক্ষেত্রটি একটি সূচক বা কোনও সূচকের অংশ। আমার সাথে এটি ঘটেছিল: পিএইচপিএমআইএডমিন ব্যবহার করে, আমি আমার টেবিলের একটিতে একটি ক্ষেত্রের কাঠামো সম্পাদনা করে " নুল " চেকবক্সটি পরীক্ষা করে " সেভ করুন " বোতামটি চেক করে NULL গুলি অনুমতি দিতে পারি । " টেবিলের মূল্য সফলভাবে পরিবর্তিত হয়েছে " প্রদর্শিত হয়েছিল তাই আমি ধরে নিয়েছিলাম যে পরিবর্তনটি ঘটেছে - এটি হয়নি। একটি করছেন পরে আপডেট করার জন্য আপনি ওই সব ক্ষেত্র সেট করতে শূন্য , তারা ছিল, পরিবর্তে, সেট খালি স্ট্রিং , তাই আমি আবার টেবিল গঠন নিয়ে গবেষণা শুরু করেন এবং বুঝতে পারল যে " নাল"যে ক্ষেত্রের জন্য কলাম 'এ সেট করা হয় কোন '। যে যখন আমি বুঝলাম যে ক্ষেত্র অংশ ছিল প্রাথমিক কী !


1

যদি আপনি আপডেট ক্যোয়ারী সেট কলাম মানটি NULL (কোট ছাড়াই) ব্যবহার করে নাল মান সেট করতে চান তবে আপডেট টেবিলেরাম সেট কলামনাম = NULL

তবে, আপনি যদি সরাসরি মাইএসকিএল ওয়ার্কবেঞ্চের মধ্যে ক্ষেত্রের মান সম্পাদনা করে থাকেন তবে নির্বাচিত কলামে নাল মান সন্নিবেশ করতে (Esc + del) কীস্ট্রোকটি ব্যবহার করুন


0

যদি আপনি অনুসরণ

UPDATE table SET name = NULL

তারপরে নামটি "" নাইল ইন মাইএসকিউএল মানে আপনার ক্যোয়ারী

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

বা কেবল বিশেষ রেকর্ডের জন্য যেখানে NUL সেট করুন

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.