developer tip

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

optionbox 2020. 12. 6. 21:29
반응형

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


누구든지 선택 쿼리가 비어 있지 않은 결과 집합을 반환하는지 확인하는 방법을 지적 할 수 있습니까?

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

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

다음과 같이해야합니까?

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

결과 집합이 비어 있지 않은지 테스트하려면?


@@ ROWCOUNT 사용 :

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

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

SQL Server 온라인 설명서 에 따르면 :

마지막 명령문의 영향을받는 행 수를 반환합니다. 행 수가 20 억 이상이면 ROWCOUNT_BIG를 사용합니다.


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

 END

나는 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 = ?

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 = ?;

count == 0인지 테스트합니다.

더 바로크 :

(SELECT count (*) as count FROM service s WHERE s.service_id =?) = 0 then 'No rows, bro!' else '데이터를 얻었습니다!'는 stupid_message로 끝납니다.


아래 게시물을 약간 요약하면 :

If all you care about is if at least one matching row is in the DB then use exists as it is the most efficient way of checking this: it will return true as soon as it finds at least one matching row whereas count, etc will find all matching rows.

If you actually need to use the data for processing or if the query has side effects, or if you need to know the actual total number of rows then checking the ROWCOUNT or count is probably the best way on hand.


SELECT count(*) as CountThis ....

Then you can compare it as string like so:

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

CHECKROW_RS is an object


In my sql use information function

select FOUND_ROWS();

it will return the no. of rows returned by select query.


well there is a way to do it a little more code but really effective

$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

반응형