sourcecode

SELECT 쿼리 빈 결과에 대한 단순 확인

copyscript 2023. 4. 9. 22:18
반응형

SELECT 쿼리 빈 결과에 대한 단순 확인

선택 쿼리가 빈 결과 세트를 반환하는지 확인하는 방법을 지적할 수 있습니까?

예를 들어 다음 쿼리가 있습니다.

SELECT * FROM service s WHERE s.service_id = ?;

다음과 같은 작업을 수행해야 합니다.

ISNULL(SELECT * FROM service s WHERE s.service_id = ?)

결과 세트가 비어 있지 않은지 테스트하려면?

IF EXISTS(SELECT * FROM service s WHERE s.service_id = ?)
 BEGIN
   --DO STUFF HERE

 END

@@ROWCOUNT 사용:

SELECT * FROM service s WHERE s.service_id = ?;

IF @@ROWCOUNT > 0 
   -- do stuff here.....

SQL Server Books Online에 따르면:

마지막 문의 영향을 받는 행 수를 반환합니다.행 수가 20억을 초과할 경우 ROWCOUNT_BIG를 사용합니다.

Ed B의 의견에 동의해요.EXISTS 메서드를 사용해야 하지만 보다 효율적인 방법은 다음과 같습니다.

IF EXISTS(SELECT 1 FROM service s WHERE s.service_id = ?)
BEGIN
   --DO STUFF HERE

END

HTH

여러 가지 방법으로 할 수 있습니다.

IF EXISTS(select * from ....)
begin
 -- select * from .... 
end
else
 -- do something 

또는 를 사용할 수 있습니다.IF NOT EXISTS , @@ROW_COUNT맘에 들다

select * from ....
IF(@@ROW_COUNT>0)
begin
-- do something
end

시험:

SELECT * FROM service s WHERE s.service_id = ?;

IF @@ROWCOUNT=0
BEGIN
    PRINT 'no rows!'
END
SELECT COUNT(1) FROM service s WHERE s.service_id = ?

아래 투고를 요약하면 다음과 같습니다.

DB에 일치하는 행이 하나 이상 있는지 여부만 신경 쓴다면exists가장 효율적인 체크 방법이기 때문에 일치하는 행을 하나 이상 발견하면 true가 반환됩니다.count, etc는 일치하는 행을 모두 검색합니다.

실제로 데이터를 처리에 사용해야 하는 경우 또는 쿼리에 부작용이 있는 경우 또는 실제 총 행 수를 알아야 하는 경우ROWCOUNT또는count가장 좋은 방법이라고 생각합니다.

SELECT * FROM service s WHERE s.service_id = ?;
IF @@rowcount = 0
begin
select 'no data'
end
SELECT count(*) as count FROM service s WHERE s.service_id = ?;

카운트 == 0 인지를 테스트합니다.

좀 더 바로크하게:

(SELECT count)가 FROM 서비스의 WHERE s.service_id = ?) = 0일 때 대소문자를 선택하고, '행 없음, 브로!'를 선택하지 않으면 'You got data!'가 studp_message로 끝납니다.

내 sql에서 정보 사용

select FOUND_ROWS();

select 쿼리에 의해 반환된 행의 수를 반환합니다.

SELECT count(*) as CountThis ....

그런 다음 다음과 같이 문자열과 비교할 수 있습니다.

IF CHECKROW_RS("CountThis")="0" THEN ...

CHECKROW_RS오브젝트

조금 더 효과적인 코드를 만들 수 있는 방법이 있습니다.

$sql = "SELECT * FROM messages";  //your query
$result=$connvar->query($sql);    //$connvar is the connection variable
$flag=0;
     while($rows2=mysqli_fetch_assoc($result2))
    { $flag++;}
    
if($flag==0){no rows selected;}
else{
echo $flag." "."rows are selected"
}

언급URL : https://stackoverflow.com/questions/2884996/simple-check-for-select-query-empty-result

반응형