집 >데이터 베이스 >MySQL 튜토리얼 >MySQL NULL 값 처리
MySQL은 SQL SELECT 명령과 WHERE 절을 사용하여 데이터 테이블에서 데이터를 읽어오는데, 제공된 쿼리 조건 필드가 NULL인 경우 명령이 제대로 작동하지 않을 수 있습니다.
이러한 상황을 처리하기 위해 MySQL은 세 가지 주요 연산자를 제공합니다.
IS NULL: 열 값이 NULL인 경우 이 연산자는 true를 반환합니다.
IS NOT NULL: 열 값이 NULL이 아닌 경우 연산자는 true를 반환합니다.
NULL에 대한 조건부 비교 연산은 매우 특별합니다. = NULL 또는 != NULL을 사용하여 열에서 NULL 값을 찾을 수 없습니다.
MySQL에서 NULL 값을 다른 값(NULL도 포함)과 비교하면 항상 false가 반환됩니다. 즉, NULL = NULL은 false를 반환합니다.
MySQL은 IS NULL 및 IS NOT NULL 연산자를 사용하여 NULL을 처리합니다.
명령 프롬프트에서 NULL 값 사용
다음 예에서는 RUNOOB 데이터베이스의 tcount_tbl 테이블에 runoob_author와 runoob_count라는 두 개의 열이 포함되어 있고 NULL 값이 다음과 같다고 가정합니다. runoob_count에 설정됩니다.
다음 예를 시도해 보세요.
MariaDB [RUNOOB]> select * from tcount_tbl;
+---------------+-- - ----------+
| runoob_author |
+---------------+---------- ----+
| 마란 20 |
| 존 폴 | 1 |
|
+---------------+- -------------+
세트의 6개 행(0.00초)
다음 예에서 = 및 != 연산자는 그렇지 않음을 볼 수 있습니다. 작업:
다음 예와 같이 데이터 테이블의 runoob_count 열이 NULL인지, IS NULL 및 IS NOT NULL을 사용해야 하는지 확인합니다.
+---------- ----+---------------+
| runoob_author | runoob_count |+---------------+-- ------------+
| 마란 NULL |
| Jen | NULL |
+---------------+- -------------+
세트의 2개 행( 0.00초)
MariaDB [RUNOOB]> SELECT * FROM tcount_tbl 여기서 runoob_count는 NULL이 아닙니다.
+---------------+---- ---------+
| runoob_author |
+------ ---------+------------ ------------- 🎜> | 마란 |
길
1 | |
| 산제이 | 1 |
+---------------+---------------+
4행 set (0.00 초)
PHP 스크립트를 사용하여 NULL 값 처리
PHP 스크립트에서는 if...else 문을 사용하여 변수가 비어 있는지 처리하고 해당 조건문 .
다음 예에서 PHP는 $runoob_count 변수를 설정한 다음 이 변수를 사용하여 데이터 테이블의 runoob_count 필드와 비교합니다.
$dbhost =' localhost:3036';
$dbuser ='root';
$dbpass ='rootpassword';
$conn = mysql_connect($dbhost, $ dbuser, $dbpass );
if(! $conn )
{
die('연결할 수 없습니다: '.mysql_error());
}
if( isset($runoob_count ))
{
$sql ='SELECT runoob_author, runoob_count
FROM tcount_tbl
runoob_ count가 NULL이 아닌 경우';
}
else
{
$sql ='SELECT runoob_author, runoob_count
FROM tcount_tbl
runoob_count가 NULL인 곳';
}
mysql_select_db('RUNOOB');
$retval = mysql_query ( $sql, $ conn );
if(! $retval )
{
die('데이터를 가져올 수 없습니다: '.mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
echo "저자:{$row['runoob_author']}
" .
"개수: {$row['runoob_count']}
".
"------------ ----- --------------
";
}
echo "데이터를 성공적으로 가져왔습니다.";
mysql_close($conn );
?>
실행 결과: