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
'developer tip' 카테고리의 다른 글
How does condensed distance matrix work? (pdist) (0) | 2020.12.07 |
---|---|
주의 첫 번째 월요일 날짜를 확인 하시겠습니까? (0) | 2020.12.06 |
런타임에 버튼의 "android : drawableTop"속성을 설정하는 방법 (0) | 2020.12.06 |
ColorFilter 제거 / setColorFilter 실행 취소 (0) | 2020.12.06 |
CLLocationCoordinate2D가 비어 있지 않은지 확인하는 방법은 무엇입니까? (0) | 2020.12.06 |