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);
?>
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);
?>
렌더링:
관련 동영상 튜토리얼 추천: 이상한 NULL