মাইএসকিউএল দিয়ে একটি খালি ক্ষেত্রের জন্য অনুসন্ধান করা হচ্ছে


101

আমি নির্দিষ্ট মানদণ্ড সহ ব্যবহারকারীদের জন্য যাচাই করার জন্য একটি কোয়েরি লিখেছি, যার একটিতে তাদের ইমেল ঠিকানা রয়েছে।

আমাদের সাইট ব্যবহারকারীর একটি ইমেল ঠিকানা রাখার বা না রাখার অনুমতি দেবে।

$aUsers=$this->readToArray('
 SELECT `userID` 
 FROM `users` 
 WHERE `userID` 
 IN(SELECT `userID`
         FROM `users_indvSettings`
  WHERE `indvSettingID`=5 AND `optionID`='.$time.')
  AND `email`!=""
 ');

এটি কি এসকিউএল খালি ক্ষেত্রের জন্য চেক করার সেরা উপায়? আমি কেবল "নুল নয়" চেষ্টা করেছি এবং এটি এখনও তাদের কোনও ইমেল ঠিকানা ছাড়াই ব্যবহারকারীর রেকর্ড ফিরিয়ে দিয়েছে।

উপরের ক্যোয়ারীটি কাজ করে তবে কৌতূহলের বাইরে আমি ভাবছিলাম যে আমি এটি সঠিক উপায়ে করছি কিনা।

php  sql  mysql  null 

উত্তর:


275

একটি খালি ক্ষেত্র খালি স্ট্রিং বা একটি হতে পারে NULL

উভয়ই পরিচালনা করতে, ব্যবহার করুন:

email > ''

rangeআপনার টেবিলটিতে প্রচুর খালি ইমেল রেকর্ড (উভয় প্রকারের) থাকলে অ্যাক্সেস থেকে উপকার পাবেন ।


12
এর বিপরীতটি কী? (যখন আপনি কেবল নুল বা '' ক্ষেত্রগুলি চান)
কীলান

4
@ কেয়েলান: কোনও একক প্রকাশ নেই।
কাসনসুই

5
@ কেয়েলান:! (ইমেল> '')
এসইওএফ

4
@ এসইএফ: এটি মিলবে নাNULL
কাসনসুই

4
কাসনোইয়ের মতো আমারও একই মন্তব্য আছে। আমি "অরিজিন_আইডি নির্বাচন করুন, হটলাইনটি স্বাভাবিক_1952 যেখানে! (হটলাইন> '') থেকে নির্বাচন করুন" এবং নাল হটলাইনের সাথে একটি রেকর্ড রয়েছে তবে এটি মেলে না I আমি মাইএসকিউএল 5.6 ব্যবহার করছি
স্কট চু

38

হ্যাঁ, আপনি যা করছেন তা সঠিক। ইমেল ক্ষেত্রটি খালি স্ট্রিং নয় তা নিশ্চিত করার জন্য আপনি পরীক্ষা করছেন। NULL অর্থ ডেটা অনুপস্থিত। একটি ফাঁকা স্ট্রিং ""0 দৈর্ঘ্যের খালি স্ট্রিং।

আপনি নাল চেকটিও যুক্ত করতে পারেন

AND (email != "" OR email IS NOT NULL)

4
আপনার এক্সপ্রেশন খালি স্ট্রিংয়ের সাথেও মিলবে। OR email IS NOT NULLএখানে অপ্রয়োজনীয় (এটি পূর্ববর্তী শর্ত দ্বারা আবদ্ধ)।
কাসনসুই

4
আকর্ষণীয়, এটি এখনও খালি emailক্ষেত্র রয়েছে এমন রেকর্ডগুলি দেয় ।

13
এখানে OR থাকা উচিত। "বা ইমেলটি নুল নয়" 0 দৈর্ঘ্যের একটি ফাঁকা ইমেল স্ট্রিংয়ের সাথে
মিলবে

পিডাভিস মন্তব্য করুন "বা হওয়া উচিত"
শিক্ষানবিশ


2

একটি খালি স্ট্রিং (ইমেল! = "") এবং NUL এর মধ্যে পার্থক্য রয়েছে। নাল শূন্য এবং একটি খালি স্ট্রিং কিছু।


কেন এবং কেন (ইমেল! = "" বা ইমেলটি নাল নয়) ব্যর্থ হচ্ছে?

4
হওয়া উচিতAND (email != '' AND email IS NOT NULL)
থেইকো

@ থাইটাইকো: email IS NOT NULLএখানে অপ্রয়োজনীয়। !=শিকারী কোনও NULLমান মিলবে না ।
কাসনসুই

কি যদি আপনি চেষ্টা: এবং (ট্রিম (ইমেল) = ''!)
লেসলি

আমি জানি আমি এই আলোচনার তুলনায় বেশি দেরি করেছি, তবে আপনি আদেশটি উল্টো করলে বিবৃতিটি কাজ করবে: "এবং ((ইমেলটি নাল নয়) এবং (ইমেল! = ''))। যদি অন্য ক্রমে মূল্যায়ন করা হয়, যদি ইমেল ঠিকানাটি নাল হয় তবে বিবৃতিটি নাল (সত্য নয়) হিসাবে মূল্যায়ন করে এবং সুতরাং সত্য বা মিথ্যা হয় না। সুতরাং IS নাল চেক প্রথম আসতে হবে!
কার্ট

2

এটি কাজ করবে তবে এখনও শূন্য রেকর্ড ফিরে আসার সম্ভাবনা রয়েছে। যদিও আপনি রেকর্ডটি সন্নিবেশ করানোর সময় ইমেল ঠিকানাটি দৈর্ঘ্যের শূন্যের স্ট্রিনে সেট করে দিচ্ছেন, আপনি এখনও কোনওভাবে NUL ইমেল ঠিকানাটি সিস্টেমে প্রবেশের বিষয়টি পরিচালনা করতে চাইতে পারেন।

     $aUsers=$this->readToArray('
     SELECT `userID` 
     FROM `users` 
     WHERE `userID` 
     IN(SELECT `userID`
               FROM `users_indvSettings`
               WHERE `indvSettingID`=5 AND `optionID`='.$time.')
     AND `email` != "" AND `email` IS NOT NULL
     ');

@ অপের ক্যোয়ারিতে NULLরেকর্ডটি ফেরার কোনও সম্ভাবনা নেই ।
কাসনসুই

0

আপনি যদি এমন সমস্ত রেকর্ডগুলি অনুসন্ধান করতে চান যা শূন্য নয়, এবং হয় ফাঁকা বা অনেকগুলি স্থান রয়েছে, এটি কাজ করবে:

LIKE '%\ '

ব্যাকস্ল্যাশ পরে একটি জায়গা আছে তা নিশ্চিত করুন। এখানে আরও তথ্য: http://dev.mysql.com/doc/refman/5.0/en/string-compistance-function.html


-3

সমস্যার জন্য এই কোডটি পরীক্ষা করুন:

$sql = "SELECT * FROM tablename WHERE condition";

$res = mysql_query($sql);

while ($row = mysql_fetch_assoc($res)) {

    foreach($row as $key => $field) {  

        echo "<br>";

        if(empty($row[$key])){

            echo $key." : empty field :"."<br>"; 

        }else{

        echo $key." =" . $field."<br>";     

        }
    }
}

প্রতিটি একক সারিতে লুপ না করেই
কোয়েরিতে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.