Latest web development tutorials

MySQL의 NULL 값 처리

우리는 이미 MySQL이 절은 데이터 테이블의 데이터를 읽을 WHERE와 SQL SELECT 명령을 사용하여 알아,하지만 NULL이 명령이 제대로 때 작동하지 않을 경우 쿼리 기준 필드를 제공합니다.

이 사건을 처리하기 위해 MySQL은 세 가지 주요 연산자를 제공합니다 :

  • NULL IS : 컬럼의 값이 NULL 인 경우, 운영자가 true를 반환합니다.
  • NULL NOT IS : 컬럼의 값이 NULL이 아닌 경우, 운영자가 true를 반환합니다.
  • <=> : 비교 (운영자는 다른 =) 연산자와 두 개의 값이 NULL 비교할 때 true를 돌려줍니다.

NULL 상태 정보 비교 동작은 특별하다. 당신은 = NULL 또는 사용할 수 없습니다! = NULL 컬럼에 NULL 값을 찾을 수 있습니다.

MySQL의에서 NULL 값은 즉, NULL = NULL false를 반환, 다른 값 (심지어 NULL) 항상 false를 반환과 비교.

MySQL은 NULL (가) NULL IS 및 NULL 연산자 NOT IS 사용하여 처리.


명령 프롬프트에서 NULL 값

다음의 예는 테이블 w3big 데이터베이스가, 두 w3big_author 및 w3big_count를 포함 tcount_tbl 설정 삽입 NULL 값을 w3big_count 것으로 가정합니다.

다음 예를보십시오 :

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> create table tcount_tbl
    -> (
    -> w3big_author varchar(40) NOT NULL,
    -> w3big_count  INT
    -> );
Query OK, 0 rows affected (0.05 sec)
mysql> INSERT INTO tcount_tbl
    -> (w3big_author, w3big_count) values ('mahran', 20);
mysql> INSERT INTO tcount_tbl
    -> (w3big_author, w3big_count) values ('mahnaz', NULL);
mysql> INSERT INTO tcount_tbl
    -> (w3big_author, w3big_count) values ('Jen', NULL);
mysql> INSERT INTO tcount_tbl
    -> (w3big_author, w3big_count) values ('Gill', 20);

mysql> SELECT * from tcount_tbl;
+-----------------+----------------+
| w3big_author | w3big_count |
+-----------------+----------------+
| mahran          |             20 |
| mahnaz          |           NULL |
| Jen             |           NULL |
| Gill            |             20 |
+-----------------+----------------+
4 rows in set (0.00 sec)

mysql>

다음 예제는 운영자가 작동하지 않습니다 = 참조 = 수 있습니다! :

mysql> SELECT * FROM tcount_tbl WHERE w3big_count = NULL;
Empty set (0.00 sec)
mysql> SELECT * FROM tcount_tbl WHERE w3big_count != NULL;
Empty set (0.01 sec)

열이 NULL인지, 당신이가 null로, 다음의 예 NULL NOT IS 사용해야합니다 w3big_count 데이터 테이블 찾기 :

mysql> SELECT * FROM tcount_tbl 
    -> WHERE w3big_count IS NULL;
+-----------------+----------------+
| w3big_author | w3big_count |
+-----------------+----------------+
| mahnaz          |           NULL |
| Jen             |           NULL |
+-----------------+----------------+
2 rows in set (0.00 sec)
mysql> SELECT * from tcount_tbl 
    -> WHERE w3big_count IS NOT NULL;
+-----------------+----------------+
| w3big_author | w3big_count |
+-----------------+----------------+
| mahran          |             20 |
| Gill            |             20 |
+-----------------+----------------+
2 rows in set (0.00 sec)

사용 PHP 스크립트 처리 NULL 값

PHP 스크립트는 변수가 비어 있으며 해당 조건문을 생성하는 경우 다른 문이 처리 할 경우 ... 수 있습니다.

다음 예는 $ w3big_count의 PHP 변수가 다음 비교 필드 w3big_count 데이터 테이블 변수를 사용하여 설정 :

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
if( isset($w3big_count ))
{
   $sql = 'SELECT w3big_author, w3big_count
           FROM  tcount_tbl
           WHERE w3big_count = $w3big_count';
}
else
{
   $sql = 'SELECT w3big_author, w3big_count
           FROM  tcount_tbl
           WHERE w3big_count IS $w3big_count';
}

mysql_select_db('w3big');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    echo "Author:{$row['w3big_author']}  <br> ".
         "Count: {$row['w3big_count']} <br> ".
         "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>