programing

MySql 쿼리 선택에서 NULL을 빈 문자열로 바꾸기

bestcode 2022. 9. 16. 00:04
반응형

MySql 쿼리 선택에서 NULL을 빈 문자열로 바꾸기

선택 항목의 NULL 값을 빈 문자열로 바꾸려면 어떻게 해야 합니까?"NULL" 값을 출력하는 것은 전문적이지 않은 것 같습니다.

이것은 매우 이례적인 일이며, 제 구문에 따르면 효과가 있을 것으로 예상됩니다.왜 그렇지 않은지 설명을 듣고 싶어요.

select CASE prereq WHEN (prereq IS NULL) THEN " " ELSE prereq end from test;

원본 테이블 모양, 원하는 것 및 실제 인쇄물의 예:

original     wanted      what actually prints
--------     ------      ---------------------
value1       value1      
NULL                     NULL
value2       value2      
NULL                     NULL

보시다시피 제가 원하는 것과 반대되는 기능을 하고 있기 때문에 IS NULL을 IS NOT NULL로 바꾸려고 했습니다만, 물론 수정은 되지 않았습니다.케이스의 위치도 바꿔보았지만, 잘 되지 않았습니다.

아래에 제시된 3가지 솔루션이 모두 작업을 수행하는 것 같습니다.

select if(prereq IS NULL ," ",prereq ) from test
select IFNULL(prereq,"") from test
select coalesce(prereq, '') from test

NULL 값을 포함한 모든 값을 출력해야 하는 경우:

select IFNULL(prereq,"") from test
SELECT COALESCE(prereq, '') FROM test

병합은 왼쪽에서 오른쪽으로 전달된 첫 번째 null 이외의 인수를 반환합니다.모든 arguments가 null인 경우 null을 반환하지만 빈 문자열을 강제로 지정하므로 null 값은 반환되지 않습니다.

또한 COALESCE 연산자는 표준 SQL에서 지원됩니다.IFNULL은 그렇지 않기 때문에 IFNULL을 사용하는 것이 좋습니다.또한 COALESCE는 3개 이상의 파라미터를 지원하며 NULL 이외의 일치가 발견될 때까지 이들 파라미터에서 반복됩니다.

아래를 시험해 보세요.

  select if(prereq IS NULL ," ",prereq ) from test

다음과 같은 기능이 내장되어 있습니다.

COALESCE(값,...)

목록의 첫 번째 NULL 이외의 값을 반환합니다.NULL 이외의 값이 없는 경우 NULL을 반환합니다.

특수한 순서

값이 NULL인지 여부를 테스트합니다.

IFNULL(expr1,expr2)

expr1이 NULL이 아닌 경우 IFNULL()은 expr1을 반환하고 그렇지 않은 경우 expr2를 반환합니다.

select IFNULL(`prereq`,'') as ColumnName FROM test

이 쿼리는 "prerereq" 값을 선택하고 있으며 값 중 하나가 null이면 원하는 빈 문자열이 표시됩니다. 따라서 NULL 값을 제외한 모든 값이 공백으로 표시됩니다.

원본 형식은 거의 완벽합니다. CASE preq를 생략하면 됩니다.

SELECT
  CASE
    WHEN prereq IS NULL THEN ' '
    ELSE prereq
  END AS prereq
FROM test;

시도합니다. NULL이 아닌 첫 번째 값을 반환합니다.

SELECT COALESCE(`prereq`, ' ') FROM `test`

이렇게 하면 빈 행도 없어집니다.

SELECT prereq FROM test WHERE prereq IS NOT NULL;

데이터베이스의 비필수 필드에 NULL(기본값으로 NULL)이 있습니다.웹 페이지에 값 "null"이 표시되지 않습니다.그러나 웹 페이지 입력 양식을 통해 데이터를 생성할 때는 "null" 값이 지정됩니다.이는 JavaScript가 AJAX 및 jQuery를 통해 데이터를 전송할 때 null을 가져와 문자열 "null"로 변환했기 때문입니다.위의 작업은 실제 문제에 대한 반창고에 불과하므로 이것이 근본적인 문제가 아님을 확인하십시오.상기 솔루션 IFNULL(...)도 이중으로 구현했습니다.감사합니다.

UPDATE your_table set your_field="" where your_field is null

언급URL : https://stackoverflow.com/questions/9560723/mysql-query-replace-null-with-empty-string-in-select

반응형