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
'sourcecode' 카테고리의 다른 글
| WPF 그리드의 하단 테두리 (0) | 2023.04.14 |
|---|---|
| XAML 그리드에서 RowDefinition Height="10*"는 무엇을 의미합니까? (0) | 2023.04.09 |
| 목표 C에서 상수를 생성하는 가장 좋은 방법은 무엇입니까? (0) | 2023.04.09 |
| 리스트 이해 python의 루프를 위해 2를 프레임하는 방법 (0) | 2023.04.09 |
| Windows PowerShell에서 표준 입력/출력 리다이렉트 (0) | 2023.04.09 |