값이 할당되지 않은 MySQL 사용자 변수의 반환값
MySQL에서 명시적으로 값을 할당하지 않은 사용자 변수를 참조하면 NULL이 반환됩니다. 즉, 해당 변수의 값은 NULL로 처리됩니다.
사용자 변수는 SET 문이나 SELECT ... := 구문을 통해 값을 할당할 수 있으며, 한 번도 값이 대입된 적이 없는 변수는 초기화되지 않은 상태로 존재하게 됩니다. 이러한 변수를 조회하면 에러가 발생하지 않고 조용히 NULL을 돌려주기 때문에, 쿼리 작성 시 주의가 필요합니다.
예제
mysql> Select @X, @Y, @Z, @S, @G; +------+-------+----------+------+------+ | @X | @Y | @Z | @S | @G | +------+-------+----------+------+------+ | Ram | Shyam | Students | 5000 | NULL | +------+-------+----------+------+------+ 1 row in set (0.00 sec)
결과 분석
위 결과 집합에서 볼 수 있듯이, @X, @Y, @Z, @S에는 각각 'Ram', 'Shyam', 'Students', 5000이라는 값이 명시적으로 할당되어 있으므로 해당 값들이 그대로 반환됩니다.
반면 @G 변수에는 어떠한 값도 할당된 적이 없습니다. 따라서 이 변수를 참조하면 MySQL은 NULL을 반환하는데, 이는 해당 변수가 실제로 NULL 값을 가지고 있기 때문입니다.
실무 팁
NULL 반환은 오류로 이어지지 않지만, 계산식이나 조건절에서 의도치 않은 결과를 초래할 수 있습니다. 예를 들어 NULL과의 산술 연산 결과는 항상 NULL이 되므로, 사용자 변수를 사용하기 전에는 반드시 값을 초기화하거나 IFNULL(), COALESCE() 같은 함수로 NULL 여부를 확인하는 것이 안전합니다.