Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL이 자동으로 빈 문자열을 NULL로 변환할 수 있습니까?

<시간/>

MySQL의 NULLIF() 함수를 사용해야 합니다. 구문은 다음과 같습니다.

SELECT NULLIF(yourCoumnName,' ') as anyVariableName from yourTableName;

위의 구문에서 빈 문자열( ' )을 빈 문자열(' )과 비교하면 결과는 항상 NULL입니다. 그러나 빈 문자열( ' ')과 NULL을 비교하면 결과도 항상 NULL이 됩니다.

위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> 테이블 생성 ConvertEmptyStringToNULL -> ( -> Id int NOT NULL AUTO_INCREMENT, -> Name varchar(20), -> PRIMARY KEY(Id) -> ); 쿼리 확인, 0개의 행이 영향을 받았습니다(0.63초) 

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다.

mysql> insert into ConvertEmptyStringToNULL(Name) values('John');Query OK, 1개의 row가 영향을 받았습니다(0.22초)mysql> insert into ConvertEmptyStringToNULL(Name) values('');Query OK, 1개의 row가 영향을 받았습니다(0.15 sec)mysql> Insert into ConvertEmptyStringToNULL(Name) values(NULL);Query OK, 1개의 row가 영향을 받습니다.> Insert into ConvertEmptyStringToNULL(Name) values('Carol');Query OK, 1행 영향(0.13초)mysql> ConvertEmptyStringToNULL(Name) values(NULL)에 삽입;Query OK, 1행 영향(0.70초)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다.

mysql> select *from ConvertEmptyStringToNULL;

다음은 출력입니다.

+----+-------+| 아이디 | 이름 |+----+-------+| 1 | 존 || 2 | || 3 | 널 || 4 | || 5 | 캐롤 || 6 | NULL |+----+-------+6행 세트(0.00초)

다음은 빈 문자열을 NULL로 변환하는 쿼리입니다.

mysql> NULLIF(Name,'')를 ConvertEmptyStringToNULL에서 EmptyStringNULL로 선택;

다음은 빈 문자열 대신 NULL을 표시하는 출력입니다.

+------------------+| 빈문자열NULL |+------------------+| 존 || 널 || 널 || 널 || 캐롤 || NULL |+------------------+6행 세트(0.00초)