[SQL] 어떤 레코드가 발견되지 않으면 값을 반환
SQL어떤 레코드가 발견되지 않으면 값을 반환
나는 작동이 간단한 문이 :
SELECT idnumber FROM dbo.database WHERE number = '9823474'
수는 테이블의 아무 곳이나 존재하지 않는 경우, 실패합니다. 나는 말한다이 문에 뭔가를 추가하고 싶습니다 : IF NO RECORD는 RETURN NULL INSTEAD OF NO ROW를 알 수있다.
어떤 제안?
해결법
-
==============================
1.NULL 값에 "더 행"을 변환하지 않으려면 하위 쿼리에서 쿼리를 캡슐화합니다.
NULL 값에 "더 행"을 변환하지 않으려면 하위 쿼리에서 쿼리를 캡슐화합니다.
나는 시험과 PostgreSQL, SQL Server와 MySQL과 연동이 확인했습니다. 또한 SQLite는 함께 작동합니다.
SELECT (SELECT id FROM tbl WHERE id = 9823474) AS id;
오라클에서는이 같은 더미 1 행 테이블 DUAL에서 선택해야합니다 :
SELECT (SELECT id FROM tbl WHERE id = 9823474) AS id FROM DUAL;
당신은 호환성을 위해 MySQL의에서 같은 작업을 수행 할 수 있습니다,하지만 당신은 필요가 없습니다. 파이어 비슷한 :
SELECT (SELECT id FROM tbl WHERE id = 9823474) AS id FROM RDB$DATABASE;
이것은 DB2 (숀 주석 같은)을 위해 작업을 수행합니다
SELECT (SELECT id FROM tbl WHERE id = 9823474) AS id FROM SYSIBM.SYSDUMMY1;
SELECT id FROM tbl WHERE id = 9823474 UNION ALL SELECT NULL -- FROM DUAL -- for Oracle FETCH FIRST 1 ROW ONLY;
표준 SQL,하지만 난 단지 다음과 같이 평가 포스트 그레스와이 테스트 : 행이 첫 번째 SELECT에서 발견되는 경우가 반환됩니다. 포스트 그레스는 즉시 첫째 인해 LIMIT 1로 발견으로 (FIRST 1 ROW 만 FETCH) 이상의 행을 찾고 중지합니다. 두 번째 SELECT는 심지어 첫 번째 아무것도 반환하면 실행됩니다. NULL 값의 데이터 유형은 자동 tbl.id의 데이터 유형에 의해 결정된다.
한계 절 소개 :
-
==============================
2.그것보다 더 간단하려면이 잘 작동합니다. 당신이 당신의 idnumber의 데이터 유형에 따라 변수에이를 할당하는 경우에는 값이 null 또는 실제 idnumber 반환 여부를 평가할 수있을 것보다.
그것보다 더 간단하려면이 잘 작동합니다. 당신이 당신의 idnumber의 데이터 유형에 따라 변수에이를 할당하는 경우에는 값이 null 또는 실제 idnumber 반환 여부를 평가할 수있을 것보다.
SELECT ISNULL( ( SELECT idnumber FROM dbo.database WHERE number = '9823474' ), NULL)
-
==============================
3.
Select isnull(sum(Amount),0) as Amt from BeginningBalance where CustomerID = @CustomerID Union all Select isnull(sum(Amount),0) as Amt from SalesOrders where CustomerID = @CustomerID Union all Select isnull(sum(Amount),0) as Amt from SalesInvoices where CustomerID = @CustomerID //Data Row Result if no data is present at Beginning Balance Table // example Amt 2000 // amount from sales orders 1000 // amount from sales invoices
// if the 1st select statement return no data use this SELECT (select sum(Amount) from BeginningBalance where CustomerID = @CustomerID) as Amt Union all Select sum(Amount) as Amt from SalesOrders where CustomerID = @CustomerID Union all Select sum(Amount) as Amt from SalesInvoices where CustomerID = @CustomerID
결과 :
Amt NULL // amount from BeginningBalance 2000 // amount from sales orders 1000 // amount from sales invoices
-
==============================
4.내가 MySQL을 위해 이것을 사용
내가 MySQL을 위해 이것을 사용
SELECT IFNULL(ColumnA,"1") AS ColumnA , COUNT(1) AS Total FROM table WHERE ID = 1 LIMIT 0, 1;
from https://stackoverflow.com/questions/8098795/return-a-value-if-no-record-is-found by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 삭제 "열이 존재하지 않습니다" (0) | 2020.04.28 |
---|---|
[SQL] SQL : 어떻게 열의 각 구별 값의 수를 얻는 방법? (0) | 2020.04.28 |
[SQL] MySQL은 / SQL : 만 날짜 시간 컬럼에 날짜별로 그룹 (0) | 2020.04.28 |
[SQL] 오라클의 모든 테이블 제약을 해제 (0) | 2020.04.28 |
[SQL] PostgreSQL의에서 타임 스탬프에서 추출 날짜 (년 / 월 / 일) (0) | 2020.04.28 |