Checking for an empty field with MySQL

前端 未结 7 411
有刺的猬
有刺的猬 2020-12-12 14:58

I\'ve wrote a query to check for users with certain criteria, one being they have an email address.

Our site will allow a user to have or not have an email address.<

相关标签:
7条回答
  • 2020-12-12 15:05

    An empty field can be either an empty string or a NULL.

    To handle both, use:

    email > ''
    

    which can benefit from the range access if you have lots of empty email record (both types) in your table.

    0 讨论(0)
  • 2020-12-12 15:16

    You could use

    IFNULL(email, '') > ''
    
    0 讨论(0)
  • 2020-12-12 15:17

    Yes, what you are doing is correct. You are checking to make sure the email field is not an empty string. NULL means the data is missing. An empty string "" is a blank string with the length of 0.

    You can add the null check also

    AND (email != "" OR email IS NOT NULL)
    
    0 讨论(0)
  • 2020-12-12 15:22

    If you want to find all records that are not NULL, and either empty or have any number of spaces, this will work:

    LIKE '%\ '
    

    Make sure that there's a space after the backslash. More info here: http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

    0 讨论(0)
  • 2020-12-12 15:22

    check this code for the problem:

    $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>";     
    
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-12 15:26

    This will work but there is still the possibility of a null record being returned. Though you may be setting the email address to a string of length zero when you insert the record, you may still want to handle the case of a NULL email address getting into the system somehow.

         $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
         ');
    
    0 讨论(0)
提交回复
热议问题