简单检查SELECT查询空结果

时间:2010-05-21 19:30:23

标签: sql sql-server database

有人能指出如何检查选择查询是否返回非空结果集吗?

例如,我有下一个查询:

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

我应该做下一件事:

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

测试结果集是否为空?

13 个答案:

答案 0 :(得分:90)

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

 END

答案 1 :(得分:71)

使用@@ ROWCOUNT:

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

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

根据SQL Server Books Online

  

返回受影响的行数   最后一句话。如果数量   行超过20亿,使用   ROWCOUNT_BIG。

答案 2 :(得分:8)

我同意Ed B.您应该使用EXISTS方法,但更有效的方法是:

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

END

HTH

答案 3 :(得分:7)

你可以通过多种方式实现这一目标。

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

答案 4 :(得分:5)

尝试:

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

IF @@ROWCOUNT=0
BEGIN
    PRINT 'no rows!'
END

答案 5 :(得分:3)

SELECT COUNT(1) FROM service s WHERE s.service_id = ?

答案 6 :(得分:2)

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

答案 7 :(得分:1)

总结下面的帖子:

如果您关心的是数据库中是否至少有一个匹配的行,那么请使用exists,因为这是检查此方法的最有效方法:一旦找​​到至少一个匹配项,它将返回true行而count等将找到所有匹配的行。

如果您确实需要使用数据进行处理,或者查询有副作用,或者您需要知道实际的总行数,那么检查ROWCOUNTcount可能是最好的方式。

答案 8 :(得分:1)

SELECT count(*) as CountThis ....

然后您可以将其与字符串进行比较,如下所示:

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

CHECKROW_RS是一个对象

答案 9 :(得分:0)

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    然后'没有行,兄弟!'否则'你有数据!'结束为stupid_message;

答案 10 :(得分:0)

在我的sql使用信息功能

select FOUND_ROWS();

它会返回no。 select查询返回的行数。

答案 11 :(得分:0)

有一种方法可以完成一些代码,但确实有效

$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"
}

答案 12 :(得分:0)

class All_Device_List: UIViewController{
    var timer: Timer? = nil
    override func viewDidLoad() {
        super.viewDidLoad()

        timer = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(All_Device_List.runTimedCode), userInfo: nil, repeats: true)       
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(true)
        timer?.invalidate()
        timer = nil
    }


    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(true)
        timer?.invalidate()
        timer = nil

    }

    @objc func runTimedCode() {
        //Action continue
    }
}