source

MySQL SELECT만 null 값이 아닙니다.

nicesource 2022. 11. 14. 21:36
반응형

MySQL SELECT만 null 값이 아닙니다.

NOT NULL 값만 사용하는 선택문이 가능한가요?

현재 사용하고 있는 것은 다음과 같습니다.

SELECT * FROM table

그런 다음 php 루프를 사용하여 null 값을 필터링해야 합니다.

다음과 같은 방법이 있습니까?

SELECT * (that are NOT NULL) FROM table

?

현재 *를 선택하면 val1, val2, val3, null, val4, val5, null, null 등을 얻을 수 있지만 결과에서 null이 아닌 값만 얻을 수 있습니다.루프를 통한 필터링 없이 이것이 가능합니까?

를 사용해 주세요.IS NOT NULL. (비교 연산자)=그리고.<>둘 다 주다UNKNOWN와 함께NULL(표현의 어느 쪽이든)

SELECT * 
FROM table 
WHERE YourColumn IS NOT NULL;

MySQL에서는 null safe equality 연산자를 비활성화할 수도 있지만 이는 표준 SQL이 아닙니다.

SELECT *
FROM table 
WHERE NOT (YourColumn <=> NULL);

코멘트를 반영하도록 편집되었습니다.테이블이 첫 번째 정규 형태가 아닌 것 같습니다.이 경우 구조를 변경하면 작업이 쉬워집니다.몇 가지 다른 방법이 있긴 하지만...

SELECT val1 AS val
FROM  your_table
WHERE val1 IS NOT NULL
UNION ALL
SELECT val2 
FROM  your_table
WHERE val2 IS NOT NULL
/*And so on for all your columns*/

위의 단점은 각 열에 대해 테이블을 여러 번 스캔한다는 것입니다.아래로는 피할 수 있지만 MySQL에서는 테스트하지 않았습니다.

SELECT CASE idx
         WHEN 1 THEN val1
         WHEN 2 THEN val2
       END AS val
FROM   your_table
        /*CROSS JOIN*/
       JOIN (SELECT 1 AS idx
                   UNION ALL
                   SELECT 2) t
HAVING val IS NOT NULL  /*Can reference alias in Having in MySQL*/

특정 열에 NULL 값이 포함된 행을 필터링할 수 있습니다.

SELECT col1, col2, ..., coln
FROM yourtable
WHERE somecolumn IS NOT NULL

열에 null이 포함된 행을 필터링하려면 다음을 수행하십시오.

SELECT col1, col2, ..., coln
FROM yourtable
WHERE col1 IS NOT NULL
AND col2 IS NOT NULL
-- ...
AND coln IS NOT NULL

업데이트: 코멘트에 근거해, 이것을 원하십니까?

SELECT * FROM
(
    SELECT col1 AS col FROM yourtable
    UNION
    SELECT col2 AS col FROM yourtable
    UNION
    -- ...
    UNION
    SELECT coln AS col FROM yourtable
) T1
WHERE col IS NOT NULL

그리고 Martin씨도 이 작업을 해야 한다면 데이터베이스 설계를 변경해야 할 것 같습니다.

Select * from your_table 
WHERE col1 and col2 and col3 and col4 and col5 IS NOT NULL;

이 접근법의 유일한 단점은 5개의 열만 비교할 수 있다는 것입니다. 그 후 결과는 항상 거짓이기 때문에, 저는 다음과 같이 될 수 있는 필드만 비교합니다.NULL.

다음 해결책을 찾았습니다.

이 쿼리는 각 열에 대해 null 값이 아닌 마지막 값을 선택합니다.


테이블이 있는 경우:

id|title|body
1 |t1   |b1
2 |NULL |b2
3 |t3   |NULL

다음과 같은 것이 있습니다.

title|body
t3   |b2

쿼리


SELECT DISTINCT (

  SELECT title
  FROM test
  WHERE title IS NOT NULL 
  ORDER BY id DESC 
  LIMIT 1
) title, (

  SELECT body
  FROM test
  WHERE body IS NOT NULL 
  ORDER BY id DESC 
  LIMIT 1
) body
FROM test

도움이 됐으면 좋겠다.

다음 쿼리를 통해 작업합니다.

'NULL' 열의 기본값을 설정한 경우

select * from table where column IS NOT NULL

디폴트값을 아무것도 설정하지 않으면

select * from table where column <>''

사용하다\!명령어를 사용하여 셸에서 NULL 값을 grep 출력합니다.

\! mysql -e "SELECT * FROM table WHERE column = 123456\G" | grep -v NULL

적절한 환경에서 가장 잘 작동합니다..my.cnf여기서 데이터베이스/메시지/비밀번호가 지정됩니다.그렇게 하면 넌 그냥 네 주변을 둘러 싸서select와 함께\! mysql e그리고.| grep -v NULL.

MYSQL은 조인, 선택, 삽입, 삭제, 논리 연산자 등의 선택, 삽입 및 논리 연산자에 의해 null이 아닙니다.

Using IS NOT NULL On Join Conditions

 SELECT * FROM users 
 LEFT JOIN posts ON post.user_id = users.id 
 WHERE user_id IS NOT NULL;

 Using IS NOT NULL With AND Logical Operator

 SELECT * FROM users 
 WHERE email_address IS NOT NULL 
 AND mobile_number IS NOT NULL;

Using IS NOT NULL With OR Logical Operator

 SELECT * FROM users 
 WHERE email_address IS NOT NULL 
 OR mobile_number IS NOT NULL;

○ ★★★★★NOT NULL음음음음음음음음음음음음음음음 음

SELECT * 
FROM table
WHERE col IS NOT NULL;
SELECT duration,id FROM `tickets` WHERE duration !=""
SELECT * FROM TABLE_NAME
where COLUMN_NAME <> '';

언급URL : https://stackoverflow.com/questions/5285448/mysql-select-only-not-null-values

반응형