MySQL NULL 값 처리


MySQL NULL 값 처리

우리는 MySQL이 데이터 테이블의 데이터를 읽기 위해 SQL SELECT 명령과 WHERE 절을 사용한다는 것을 이미 알고 있지만, 제공 쿼리 조건 필드가 NULL인 경우 명령어가 제대로 동작하지 않을 수 있습니다.

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

  • IS NULL: 열의 값이 NULL인 경우 연산 기호는 true를 반환합니다.

  • IS NOT NULL: 열 값이 NULL이 아닌 경우 연산자는 true를 반환합니다.

  • <=>: 비교 연산자(= 연산자와 다름), 비교된 두 값이 NULL인 경우 true를 반환합니다.

NULL에 대한 조건 비교 연산은 매우 특별합니다. = NULL 또는 != NULL을 사용하여 열에서 NULL 값을 찾을 수 없습니다.

MySQL에서 NULL 값을 다른 값(NULL도 포함)과 비교하면 항상 false가 반환됩니다. 즉, NULL = NULL은 false를 반환합니다.

MySQL은 IS NULL 및 IS NOT NULL 연산자를 사용하여 NULL을 처리합니다.

참고:

select * , columnName1+ifnull(columnName2,0) from tableName;

columnName1, columnName2는 int 유형입니다. columnName2의 null 값을 0으로 설정합니다.

명령 프롬프트에서 NULL 값 사용

다음 예에서는 php 데이터베이스의 php_test_tbl 테이블에 php_author 및 php_count,php_count라는 두 개의 열이 포함되어 있다고 가정합니다. 설정에 NULL 값을 삽입하세요.

다음 예를 시도해 보세요.

데이터 테이블 php_test_tbl 생성

mysql> use php;
Database changed
mysql> create table php_test_tbl
    -> (
    -> php_author varchar(40) NOT NULL,
    -> php_count  INT
    -> );
Query OK, 0 rows affected (0.05 sec)
mysql> INSERT INTO php_test_tbl (php_author, php_count)
 values ('PHP', 20);
 mysql> INSERT INTO php_test_tbl (php_author, php_count) values ('PHP中文网', NULL);
 mysql> INSERT INTO php_test_tbl (php_author,php_count) values ('Google', NULL);
 mysql> INSERT INTO php_test_tbl (php_author, php_count) values ('FK', 20); 
mysql> SELECT * from php_test_tbl;
+---------------+--------------+
| php_author | php_count |
+---------------+--------------+
| PHP        | 20           |
| php中文网  | NULL         |
| Google        | NULL         |
| FK            | 20           |
+---------------+--------------+
 4 rows in set (0.01 sec)

다음에서 = 및 != 연산자가 작동하지 않는 것을 볼 수 있습니다:

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

데이터 테이블의 php_test_tbl 열이 NULL인지 확인하려면 다음과 같이 IS NULL 및 IS NOT NULL을 사용해야 합니다. 다음 예:

mysql> SELECT * FROM php_test_tbl WHERE php_count IS NULL;
+---------------+--------------+
| php_author | php_count |
+---------------+--------------+
| PHP中文网  | NULL         |
| Google        | NULL         |
+---------------+--------------+
2 rows in set (0.01 sec)
 mysql> SELECT * from php_test_tbl WHERE php_count IS NOT NULL;
+---------------+--------------+
| php_author | php_count |
+---------------+--------------+
| PHP       | 20           |
| FK            | 20           |
+---------------+--------------+
2 rows in set (0.01 sec)

PHP 스크립트를 사용하여 NULL 값 처리

PHP 스크립트에서는 if...else 문을 사용하여 처리할 수 있습니다. 변수가 비어 있는지 여부를 확인하고 해당 조건문을 생성합니다.

다음 예에서 PHP는 $php_count 변수를 설정한 다음 이 변수를 사용하여 데이터 테이블의 php_count 필드와 비교합니다.


<?php
header("Content-Type: text/html;charset=utf-8");

$dbhost = 'localhost'; // mysql 서버 호스트 주소
$dbuser = 'root'; // mysql 사용자 이름
$dbpass = 'root' dbpass);
if(! $conn )
{
die( '연결 실패: ' . mysqli_error($conn));
}
//중국어 문자 깨짐을 방지하도록 인코딩 설정
mysqli_query($conn, "set names utf8");

if(isset($runoob_count))
{
$sql = "SELECT php_author, php_count
FROM php_test_tbl
WHERE php_count = $php_count";
}
else
{
$sql = "SELECT php_author,php_count
" php_test_tbl에서
php_count가 NULL인 곳";
}
mysqli_select_db( $conn, 'php' );
$retval = mysqli_query ( $conn, $sql );
if(! $retval )
{
die('데이터를 읽을 수 없습니다: ' .mysqli_error($conn));
}
echo '

PHP 중국어 웹사이트는 NULL 테스트입니다

';
echo '<table border="1"><tr><td>저자</td><td>로그인 수< ;/td></tr>';
while($row = mysqli_fetch_array($retval, MYSQL_ASSOC))
{
echo "<tr>".
"<td> {$row['php_author']} </td> ".
"<td>{$row[' php_count']} </td> ".
"</tr> ;
}
echo '</table>';
mysqli_close($conn);
?>

렌더링:

Image 4.jpg

관련 동영상 튜토리얼 추천: 이상한 NULL