MySQL이 NULL이 아니면 1을 표시하고, 그렇지 않으면 0을 표시합니다.
디스플레이가 좀 복잡해서 작업하고 있어요제가 간과하고 있는 IF/ELSE 기능이 있다고 확신합니다.
문의할 테이블이 2개 있습니다(고객, 주소).첫 번째 레코드에는 메인 레코드가 있지만 두 번째 레코드에는 LEFT JOIN 레코드가 있을 수도 있고 없을 수도 있습니다.
주소 테이블에 레코드가 없으면 0을 표시하고 싶습니다.그리고 레코드가 존재하는 경우 1만 표시합니다.
지금까지 시도했던 것:
SELECT c.name, COALESCE(a.addressid,0) AS addressexists
FROM customers c
LEFT JOIN addresses a ON c.customerid = a.customerid
WHERE customerid = 123
이 첫 번째 예에서는 그렇지 않습니다.하지만 제가 COALESCE를 잘못 사용하고 있는 것 같습니다.
0(늘인 경우)과 1(있는 경우)을 표시하려면 어떻게 해야 합니까?
대신COALESCE(a.addressid,0) AS addressexists
,사용하다CASE
:
CASE WHEN a.addressid IS NOT NULL
THEN 1
ELSE 0
END AS addressexists
또는 더 간단한 것:
(a.addressid IS NOT NULL) AS addressexists
이것은, 다음과 같은 이유로 동작합니다.TRUE
로 표시됩니다.1
MySQL 및FALSE
~하듯이0
.
SELECT c.name, IF(a.addressid IS NULL,0,1) AS addressexists
FROM customers c
LEFT JOIN addresses a ON c.customerid = a.customerid
WHERE customerid = 123
C/C++에서 온 경우 이 기능이 작동하기를 기대하는 경우 주의하십시오.
select if(name, 1, 0) ..
'name'이 NULL이 아니더라도 C와 달리 false-condition은 계속 트리거되고 위의 문장은 0을 반환합니다.따라서 NULL 또는 빈 문자열을 명시적으로 확인해야 합니다.
select if(name is null or name = '', 0, 1)
위의 PS Eugen의 예는 맞지만, 나는 이 뉘앙스가 나를 놀라게 했기 때문에 명확하게 하고 싶었다.
SELECT
c.name,
CASE WHEN a.addressid IS NULL THEN 0 ELSE 1 END AS addressexists
FROM customers c
LEFT JOIN addresses a ON c.customerid = a.customerid
WHERE customerid = 123
WHERE를 사용하지 않는 다른 방법, 이것을 사용해 보세요.
빈 값과 NULL 값을 모두 선택합니다.
SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename
빈 문자열일 경우 null로 설정되며, 이 경우에도 true가 됩니다.
실제로 MySQL의 최신 버전에서 IF 문을 사용할 수 있습니다.
IF(expr,if_true_expr,if_false_expr)
IE:
SELECT name, IF(ISNULL(name), 'robot', 'human') AS type
FROM visitors
TSQL 의 경우는, 다음의 조작을 실행할 수 있습니다.
SELECT IIF(a.addressid IS NULL, 0, 1) AS addressexists
SQL Server는 동작합니다.
언급URL : https://stackoverflow.com/questions/9387839/mysql-if-not-null-then-display-1-else-display-0
'programing' 카테고리의 다른 글
str_replace를 사용하여 첫 번째 일치 시에만 작동합니까? (0) | 2023.01.24 |
---|---|
Ubuntu의 MySQL JDBC jar 파일은 어디에 있습니까? (0) | 2023.01.14 |
오늘 날짜에 일수를 추가하는 방법은 무엇입니까? (0) | 2023.01.14 |
JavaScript를 사용하여 ReCaptcha를 새로고침하는 방법 (0) | 2023.01.14 |
MYSQL SELECT: WHERE 절의 첫 번째 또는 두 번째 조건이 충족되었는지 여부를 나타내는 추가 열을 얻는 방법 (0) | 2023.01.14 |